`

android:configChanges="keyboardHidden|orientation

 
阅读更多
一般在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方法”
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics