如何在Android 4.2及更低版本的代码中锁定屏幕旋转?
我在安卓4.4中使用了如何在Android 4.2及更低版本的代码中锁定屏幕旋转?,android,screen-orientation,Android,Screen Orientation,我在安卓4.4中使用了ActivityInfo.SCREEN\u ORIENTATION\u LOCKED和ActivityInfo.SCREEN\u UNSPECIFIED来控制屏幕旋转,这是很好的。但是当我在安卓4.2中设置ActivityInfo.SCREEN\u ORIENTATION\u LOCKED时,它是无用的。 我怎么做呢?您必须在您的舱单中声明 <activity android:name=".MyActivity" android:label="@strin
ActivityInfo.SCREEN\u ORIENTATION\u LOCKED
和ActivityInfo.SCREEN\u UNSPECIFIED
来控制屏幕旋转,这是很好的。但是当我在安卓4.2中设置ActivityInfo.SCREEN\u ORIENTATION\u LOCKED
时,它是无用的。
我怎么做呢?您必须在您的舱单中声明
<activity android:name=".MyActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
您也可以看到这一点。您必须以编程方式覆盖它。获取当前方向,然后如果切换以修复状态,请将该方向设置为应用程序的方向 例如:
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\u ORIENTATION\u 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);
}
}
就这样
现在,最终代码将如下所示:
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上测试,运行安卓4.2,效果很好。希望有帮助 您想要模式
横向
?您可以在“查看我的答案”中设置android:screenOrientation=“纵向”或android:screenOrientation=“横向”,如果它解决了您的问题,请将其标记为正确答案;)我想实现一个功能,有一个切换按钮,当它被选中时,如果我旋转我的设备,屏幕将无法旋转,当它被取消选中时,屏幕将可以旋转,我已经实现了这个功能,但它不能在Android 4.2中像在Pad中的360 Browser那样显示。@user4689328您必须通过编程覆盖它。获取当前方向,然后如果切换到修复状态,将其设置为方向,否则不做任何操作。if(允许屏幕更改.equals(“是”){setRequestedOrientation(ActivityInfo.screen_orientation_UNSPECIFIED);}else if(允许屏幕更改.equals(“否”){setRequestedOrientation(ActivityInfo.screen_orientation_锁定)}这种方法在安卓4.4系统中效果良好,但在安卓4.2中效果不佳,如华为S8-301w。