android:configChanges="keyboardHidden|orientation

一般在AndroidManifest.xml文件中都没有使用到android:configChanges="keyboardHidden|orientation"配置,当然还是很有用的哈

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

AndroidManifest.xml文件

<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.test"android:versionCode="1"android:versionname="1.0">

<uses-sdkandroid:minSdkVersion="8"/>

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

<activityandroid:name=".TestActivity"android:label="@string/app_name"android:configChanges="keyboardHidden|orientation"><intent-filter>

<actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter>

</activity>

</application></manifest>

main.xml文件

<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">

<TextViewandroid:id="@+id/tv"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="横竖屏切换测试"/>

<EditTextandroid:layout_width="fill_parent"android:layout_height="wrap_content"

android:id="@+id/et"/>

</LinearLayout>

TestActivity.java文件

packagecom.test;

importandroid.app.Activity;

importandroid.content.res.Configuration;

importandroid.os.Bundle;

importandroid.widget.EditText;

importandroid.widget.TextView;

publicclassTestActivityextendsActivity

{

EditTextet;TextViewtv;

@Override

publicvoidonCreate(BundlesavedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

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

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

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

}

@Override

publicvoidonConfigurationChanged(ConfigurationnewConfig)

{

super.onConfigurationChanged(newConfig);

if(

newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){

tv.setText("横屏");

}

else{

tv.setText("竖屏");

}

}}

可以亲测一下,以验证我刚才说的结论“当在xml文件中配置了android:configChanges="keyboardHidden|orientation"属性,在横紧屏切换的时候不会重新执行Activity的onCreate方法,只是执行onConfigurationChanged方法,否则切换的时候会重新执行onCreate方法”

相关推荐