在应用程序开发时有时不同的状态需要对应不同的布局文件。其实比较简单,以横屏与竖屏变换为例切换不同的布局文件。
首先,创建一个项目,在Manifest文件中为MainActivity添加configChanges属性如下:
<span style="white-space:pre"> </span><activity
android:name=".MyActivity"
android:label="@string/app_name"
android:configChanges="screenSize|orientation|keyboardHidden">
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
添加属性完成后,在screensize,orientation,keyboard等属性改变后,会触发MainActivity中的onConfigurationChanged函数,重写改函数即可。
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// [ ... Update any UI based on resource values ... ]
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { //竖屏
// [ ... React to different orientation ... ]
setContentView(R.layout.new_main);
}
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { //横屏
// [ ... React to different orientation ... ]
setContentView(R.layout.main);
TextView tv = (TextView)findViewById(R.id.test);
tv.setText("hello");
}
if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) {
// [ ... React to changed keyboard visibility ... ]
}
}
在这里,main和new_main是我定义的两个布局文件,这样便实现了横屏与竖屏切换时显示不同布局的功能。