2 markdowneide markdowneide 于 2013.05.24 10:36 提问

改变程序中的默认自动旋转屏幕

程序中有一个开关按钮。我想改变或控制默认设置,用代码的方式实现自动旋转屏幕(Settings>Display>Auto rotate screen) 。
如何实现?

2个回答

Jave_
Jave_   2013.05.24 11:28
已采纳

先判断是否打开:
int flag=Settings.System.getInt(context.getContentResolver(),Settings.System.ACCELEROMETER_ROTATION, 0);
打开关闭,关闭打开:
Settings.System.putInt(context.getContentResolver(),Settings.System.ACCELEROMETER_ROTATION,flag==1?0:1);

还得在manifest里面设置
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="user"

并且要加上权限:
android.permission.WRITE_SETTINGS

JonSkeet
JonSkeet   2013.05.24 17:50

在你的 activity 中加入:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//这是默认值
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

你可以使用下面的代码来禁止自动转向:

public static void setAutoOrientationEnabled(ContentResolver resolver, boolean enabled)
{
  Settings.System.putInt(resolver, Settings.System.ACCELEROMETER_ROTATION, enabled ? 1 : 0);
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!