Android - 如何锁定不同设备的方向?

Android - How to lock orientation for different device?

我正在尝试将 phone 锁定为纵向,将平板电脑锁定为横向。 我通常使用 AndroidManifest.xml - android:screenOrientation="portrait" 但是我怎样才能以不同的方式设置 tablet / phone 的方向呢? 谢谢!

首先检查设备是智能手机还是平板电脑,然后您可以使用以下代码

设置 activity 的方向
 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

你可以查看 Determine if the device is a smartphone or tablet?

首先,您可以检测您的应用是 运行 智能手机还是平板电脑,请参阅以下 answer

现在您可以使用以下代码锁定方向:

If(isTablet)
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
else
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

使用Java代码。在 java class 中,您想要进行特殊定位,请使用此代码:

if ((getResources().getConfiguration().screenLayout &
            Configuration.SCREENLAYOUT_SIZE_MASK) ==
            Configuration.SCREENLAYOUT_SIZE_XLARGE) {
        // on a X large screen device ...
        getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    } else if ((getResources().getConfiguration().screenLayout &
            Configuration.SCREENLAYOUT_SIZE_MASK) ==
            Configuration.SCREENLAYOUT_SIZE_LARGE) {
        // on a large screen device ...
        // do everythings you want to do ...
    } else {
        getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }

并且在片段中使用 "getActivity()" 而不是 "this"。为了使设备视图灵活,请使用此代码:

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

也许有用。祝你好运。

最好的解决办法是从特定值的res文件夹中加载一个参数。因此,如果您的应用在平板电脑上 运行,则屏幕密度必须大于或等于 600dp。

在文件夹中:res/values-sw600dp/ 使用参数创建 xml:

<resources>
    <bool name="isTablet">true</bool>
</resources>

在文件夹 res/values/ 中用参数

创建 xml
<resources>
    <bool name="isTablet">false</bool>
</resources>

之后,您将能够使用以下代码检查应用是 运行 在平板电脑上还是 phone:

boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

来源:

https://developer.android.com/guide/practices/screens_support.html