在我的应用程序中控制默认自动旋转屏幕

时间:2012-03-15 10:58:40

标签: android device-orientation

我的应用程序中有一个切换按钮。我想以编程方式更改或控制默认设置,自动旋转屏幕(设置>显示>自动旋转屏幕)。有人知道怎么做吗?

4 个答案:

答案 0 :(得分:10)

你在活动中试过这个吗?

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

//This is the default value
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

之后您可以使用它来禁用自动方向:

public static void setAutoOrientationEnabled(ContentResolver resolver, boolean enabled)
{
  Settings.System.putInt(resolver, Settings.System.ACCELEROMETER_ROTATION, enabled ? 1 : 0);
}

Documentation

答案 1 :(得分:7)

你可以用这个:

android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.USER ROTATION,user_rotation);

用于轮换政策

user_rotation 0 -> ROTATION_0
user_rotation 1 -> ROTATION_90
user_rotation 2 -> ROTATION_180
user_rotation 3 -> ROTATION_270

请参阅http://developer.android.com/reference/android/provider/Settings.System.html#USER_ROTATION了解更多信息。

还有menifiest.xml设置

<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>

答案 2 :(得分:3)

您可以在清单文件中设置默认旋转设置,例如:

<activity android:name=".MainTabActivity" android:screenOrientation="portrait">
</activity>

要以编程方式更改方向,您必须调用 Activity.setRequestedOrientation()

答案 3 :(得分:0)

a1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        startActivity(new Intent(getApplicationContext(), MainActivity.class));
        android.provider.Settings.System.putInt(getContentResolver(),
                android.provider.Settings.System.USER_ROTATION,0);
    }
});
a2.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        startActivity(new Intent(getApplicationContext(), MainActivity.class));
        android.provider.Settings.System.putInt(getContentResolver(),
                android.provider.Settings.System.USER_ROTATION,90);
    }
});