android:configChanges="keyboardHidden|orientation
16lz
2021-01-26
一般在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方法”
就是如果配置了这个属性,当我们横竖屏切换的时候会直接调用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方法”
更多相关文章
- 继承Application实现Android数据共享
- linux挂载android 根文件系统的过程
- 编译Coco2d-x android 程序出现make: *** No rule to make targe
- Android中两种设置全屏的方法!!!
- android linux 基础知识总结(1)
- Android(安卓)OpenCV使用2_使用OpenCV并进行人脸检测
- Android中string转换成int
- Android(安卓)– 在Gradle中更改APK文件名
- Android(安卓)toolbar各类知识