【发布时间】:2011-02-19 11:32:05
【问题描述】:
我想在我的偏好 Activity 中创建复选框,允许用户切换方向更改。
在类似的问题中,人们只写完全方向锁定(通过覆盖 onConfigurationChanged 方法或在 AndroidManifest.xml 中添加 configChanges)或方向强制(通过 setRequestedOrientation)。
有没有办法切换方向锁定?
编辑:
我创建了一种将首选方向设置为以下三种状态之一的方法:横向、纵向和传感器。此方法与检索方向getResources().getConfiguration().orientation) 结合使用,并将检索到的方向保存到首选项中。然后在需要锁定方向的活动中,我使用首选项中的首选方向触发此方法。
private static void setActivityOrientation(Activity activity, int preferenceOrientation) {
if (preferenceOrientation == Configuration.ORIENTATION_LANDSCAPE) {
if( activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
// You need to check if your desired orientation isn't already set because setting orientation restarts your Activity which takes long
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
} else if (preferenceOrientation == Configuration.ORIENTATION_PORTRAIT) {
if( activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
} else {
if( activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_SENSOR){
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
}
}
【问题讨论】:
标签: java android orientation