Android 解锁设备时,OnConfiguration更改为首次不调用
我正在开发一个应用程序,它可以根据设备方向改变部分布局。我正在使用Android 解锁设备时,OnConfiguration更改为首次不调用,android,orientation,lockscreen,Android,Orientation,Lockscreen,我正在开发一个应用程序,它可以根据设备方向改变部分布局。我正在使用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 根据设备传感器将我的活动设置为自动旋转。我的配置更改方法 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
根据设备传感器将我的活动设置为自动旋转。我的配置更改方法
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (controllerView != null) {
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// Load Landscape Layout
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
// Load Portrait Layout
}
}
}
AndroidManifest:
<activity
android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize" />
问题:
<activity
android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize" />
onConfigurationsChanged在每次设备方向改变时都可以正常工作,但问题是,假设设备处于横向模式,我锁定屏幕,然后当我再次解锁屏幕时,设备会自动转到纵向模式。如果我将设备转到横向模式,屏幕会旋转,但onConfigurationsChanged()不调用,因此纵向模式布局以横向模式显示。如果您有不同方向的不同布局,您应该在
layout
和layout land
文件夹中包含活动\u layout.xml
文件
layout/your\u activity\u layout.xml
->用于纵向模式
layout land/your_activity_layout.xml
->用于景观模式
另外,setContentView(R.layout.your_activity_layout)
只能写在活动的onCreate
方法中,在super.onCreate(savedInstanceState)
最后,您应该从清单中删除android:configChanges=“keyboardHidden | orientation | screenSize”
,让MyActivity
在每次方向更改时重新创建自己
之后,每次调用onCreate
方法时(每次方向更改后调用该方法)R.layout。您的\u活动\u布局
适合当前方向