如何在 Android 4.2 及更低版本的代码中锁定屏幕旋转?
How to lock screen rotation in the code on Android 4.2 and lower?
我在Android 4.4中用ActivityInfo.SCREEN_ORIENTATION_LOCKED
和ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
控制屏幕旋转,现在是good.But在Android中设置ActivityInfo.SCREEN_ORIENTATION_LOCKED
4.2,没用。
我该怎么做?
您必须在清单中声明
<activity android:name=".MyActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
你也可以使用 android:screenOrientation="landscape"
在你的代码中类似
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
你也可以看到这个guide。
您必须以编程方式覆盖它。获取当前方向,然后如果您切换以修复状态,请将该方向设置为应用程序的方向。
例如:
int rotation=getResources().getConfiguration().orientation;
//ORIENTATION_LANDSCAPE = 2, ORIENTATION_PORTRAIT=1
if(rotation==1){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}else{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
这会将其锁定到当前方向。
为了释放它,只需像这样使用 ActivityInfo.SCREEN_ORIENTATION_SENSOR
:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
就是这样。
现在,最终代码将如下所示:
if(allow_screen_change.equals("yes")){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}else if(allow_screen_change.equals("no")){
int rotation=getResources().getConfiguration().orientation;
//ORIENTATION_LANDSCAPE = 2, ORIENTATION_PORTRAIT=1
if(rotation==1){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}else{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
我刚刚制作了这个并在 HTC One X 上进行了测试,运行 Android 4.2 并且运行良好。希望对您有所帮助!
我在Android 4.4中用ActivityInfo.SCREEN_ORIENTATION_LOCKED
和ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
控制屏幕旋转,现在是good.But在Android中设置ActivityInfo.SCREEN_ORIENTATION_LOCKED
4.2,没用。
我该怎么做?
您必须在清单中声明
<activity android:name=".MyActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
你也可以使用 android:screenOrientation="landscape"
在你的代码中类似
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
你也可以看到这个guide。
您必须以编程方式覆盖它。获取当前方向,然后如果您切换以修复状态,请将该方向设置为应用程序的方向。
例如:
int rotation=getResources().getConfiguration().orientation;
//ORIENTATION_LANDSCAPE = 2, ORIENTATION_PORTRAIT=1
if(rotation==1){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}else{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
这会将其锁定到当前方向。
为了释放它,只需像这样使用 ActivityInfo.SCREEN_ORIENTATION_SENSOR
:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
就是这样。
现在,最终代码将如下所示:
if(allow_screen_change.equals("yes")){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}else if(allow_screen_change.equals("no")){
int rotation=getResources().getConfiguration().orientation;
//ORIENTATION_LANDSCAPE = 2, ORIENTATION_PORTRAIT=1
if(rotation==1){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}else{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
我刚刚制作了这个并在 HTC One X 上进行了测试,运行 Android 4.2 并且运行良好。希望对您有所帮助!