您的位置:首页 > 移动开发 > Android开发

关于android:configChanges的属性

2011-08-16 10:07 459 查看
一般在AndroidManifest.xml文件中都没有使用到android:configChanges="keyboardHidden|orientation"配置,当然还是很有用的。

  就是如果配置了这个属性,当我们横竖屏切换的时候会直接调用onCreate方法中的onConfigurationChanged方法,而不会重新执行onCreate方法,那当然如果不配置这个属性的话就会重新调用onCreate方法了,下面是测试
  AndroidManifest.xml文件

  <?xml version="1.0" encoding="utf-8"?>

  <manifest xmlns:android="http://schemas.android.com/apk/res/android"

   package="com.test"

   android:versionCode="1"

   android:versionName="1.0">

   <uses-sdk android:minSdkVersion="8" />

   <application android:icon="@drawable/icon" android:label="@string/app_name">

   <activity android:name=".TestActivity"

   android:label="@string/app_name"

   android:configChanges="keyboardHidden|orientation">

   <intent-filter>

   <action android:name="android.intent.action.MAIN" />

   <category android:name="android.intent.category.LAUNCHER" />

   </intent-filter>

   </activity>

   </application>

  </manifest>

  main.xml文件

  <?xml version="1.0" encoding="utf-8"?>

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

   android:orientation="vertical"

   android:layout_width="fill_parent"

   android:layout_height="fill_parent"

   >

   <TextView

   android:id="@+id/tv"

   android:layout_width="fill_parent"

   android:layout_height="wrap_content"

   android:text="横竖屏切换测试"

   />

   <EditText

   android:layout_width="fill_parent"

   android:layout_height="wrap_content"

   android:id="@+id/et"

   />

  </LinearLayout>

  TestActivity.java文件
  package com.test;

  import android.app.Activity;

  import android.content.res.Configuration;

  import android.os.Bundle;

  import android.widget.EditText;

  import android.widget.TextView;

  public class TestActivity extends Activity {

   EditText et;

   TextView tv;

   @Override

   public void onCreate(Bundle savedInstanceState) {

   super.onCreate(savedInstanceState);

   setContentView(R.layout.main);

   et = (EditText) findViewById(R.id.et);

   tv = (TextView) findViewById(R.id.tv);

   System.out.println("我是onCreate方法");

   }

   @Override

   public void onConfigurationChanged(Configuration newConfig) {

   super.onConfigurationChanged(newConfig);

   if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){

   tv.setText("横屏");

   }else{

   tv.setText("竖屏");

   }

  

   }

  }  

可以亲测一下,以验证我刚才说的结论“当在xml文件中配置了android:configChanges="keyboardHidden|orientation"属性,在横紧屏切换的时候不会重新执行Activity的onCreate方法,只是执行onConfigurationChanged方法,否则切换的时候会重新执行onCreate方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: