如何限制平板电脑的屏幕方向

时间:2014-09-24 10:23:54

标签: android android-orientation device-orientation

我想限制平板电脑在特定的屏幕方向上启动,如风景?我在这里谈论的是整个平板电脑而不是特定的应用程序,并且我确定在启动后没有关闭平板电脑中的自动旋转,我'我正在考虑限制平板电脑在风景区开展。

4 个答案:

答案 0 :(得分:0)

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

//adding permission

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

答案 1 :(得分:0)

创建文件orientationLock.xml并将其放入其中 - res/values/orientationLock.xml(名称无关紧要) -

    <bool name="orien_lock">true</bool>

现在在res中创建一个名为values-sw600dpvalues-xlarge的文件夹(如果您还没有)并将其放入其中 -

    <bool name="orien_lock">false</bool>

然后,在您的活动的onCreate方法中输入:

锁定纵向模式

if(getResources().getBoolean(R.bool.orien_lock)){
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

锁定横向模式

if(getResources().getBoolean(R.bool.orien_lock)){
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

<强>解释

在宽度超过600dp(迷你制表符)或x-large(在Android 3.2之前版本)的设备上,orien_lock的值将变为false(由我们定义)为values-sw600dp中的文件将被调用,它将被锁定在横向/纵向模式。

答案 2 :(得分:0)

对于平板电脑中的每项活动,您都可以在清单文件中使用此活动 我正在做类似的工作,它很容易。

<activity
            android:name="com.example.abc.MainActivity"
            android:label=""
            android:screenOrientation="landscape"
            android:windowSoftInputMode="adjustResize|adjustPan" >
        </activity>

答案 3 :(得分:0)

找到答案,一个应用程序,只运行一次。

创建一个应用并向其添加权限,以显示 write_settings &amp; listen-to-boot

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

然后创建一个receiver扩展 BroadcastReceivertype,并使用以下权限:

    <receiver android:enabled="true" android:exported="true" 
        android:name="com.example.BootCompletedReceiver"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
        <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.QUICKBOOT_POWERON" />
                <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

然后在onReceive()类的receiver方法中:

ContentResolver contentResolver = context.getContentResolver();
        //To handle device rotation 
        Settings.System.putInt(contentResolver, Settings.System.ACCELEROMETER_ROTATION, 0);
        Settings.System.putInt(contentResolver, Settings.System.USER_ROTATION, Surface.ROTATION_90); // 0 for default, then 90, 180, 270

然后运行此应用只需一次即可将该权限写入系统,然后您再也不需要它了。