我有一个与此非常类似的问题:Android - ActionBar not resizing with onConfigurationChanged ( AppCompat )
我需要让android处理方向更改,因为我想重新创建活动。
但是,我还需要检测何时产生了方向变化。
这两项综合需求是否能够立即实现?
答案 0 :(得分:4)
要检测活动的轮播而不干扰其课程</ strong>,您可以执行以下操作:
@Override
public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
// Check for the rotation
if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "LANDSCAPE", Toast.LENGTH_SHORT).show();
} else if (config.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "PORTRAIT", Toast.LENGTH_SHORT).show();
}
}
此外,您需要确保清单上的,您的活动允许使用configChanges进行轮换
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
重要:从Android 3.2及更高版本开始(API 13+),当设备在纵向和横向之间切换时,“屏幕尺寸”也会发生变化。
如果要在针对特定API级别(13+)进行开发时由于方向更改而阻止运行时重新启动,请确保声明:android:configChanges="orientation|screenSize"
- // -
编辑
使用configChanges
属性时,在配置更改时不会重新创建您的活动。
More can be found on Google's Documentation here
<强> 机器人:configChanges 强>
列出活动将自行处理的配置更改。什么时候 在运行时发生配置更改,活动将关闭 默认情况下重新启动,但使用此声明配置 属性将阻止活动重新启动。相反, 活动仍在运行,其onConfigurationChanged()方法是 调用。
您可以做的是用标志控制旋转,如果调用onConfigurationChanged()
,您可以自己调用活动onCreate()
。如果不是,则仅在首次实例化Activity时调用onCreate()