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

时间:2016-10-07 18:23:52

标签: android locking orientation landscape portrait

我正在尝试将手机锁定为纵向和平板电脑以横向拍摄。 我通常使用AndroidManifest.xml - android:screenOrientation =" portrait" 但是,如何设置平板电脑/手机的方向? 谢谢!

4 个答案:

答案 0 :(得分:2)

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

在文件夹中:res / values-sw600dp / create xml with param:

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

在文件夹res / values / create xml with param

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

之后您可以使用以下代码检查应用是否在平板电脑或手机上运行:

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

来自:
https://stackoverflow.com/a/9308284/619673
https://developer.android.com/guide/practices/screens_support.html

答案 1 :(得分:0)

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

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

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

使用Java代码。在要进行特殊定位的java类中,请使用以下代码:

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);
    }

和片段使用&#34; getActivity()&#34;而不是&#34;这个&#34;。为了使设备的视图灵活使用此代码:

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

也许有效。祝你好运。