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

Android-如何锁定不同设备的方向?,android,locking,orientation,landscape,portrait,Android,Locking,Orientation,Landscape,Portrait,我正在尝试将手机锁定为纵向,平板电脑锁定为横向。 我通常使用AndroidManifest.xml-android:screenOrientation=“肖像” 但是,我如何以不同的方式设置平板电脑/手机的方向? 谢谢 首先检查设备是智能手机还是平板电脑,然后您可以使用以下代码设置活动方向 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 或 您可以先检查设备是智能手机还是平板电脑,然后使用下面的代码设置活

我正在尝试将手机锁定为纵向,平板电脑锁定为横向。 我通常使用AndroidManifest.xml-android:screenOrientation=“肖像” 但是,我如何以不同的方式设置平板电脑/手机的方向?
谢谢

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

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);


您可以先检查设备是智能手机还是平板电脑,然后使用下面的代码设置活动方向

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);


您可以先检查

您可以检测您的应用程序是在智能手机上运行还是在平板电脑上运行,请参见以下内容

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

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

首先,您可以检测您的应用程序是在智能手机上运行还是在平板电脑上运行,请参见以下内容

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

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

使用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);
    }
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
在片段中使用“getActivity()”而不是“this”。要使设备视图灵活,请使用以下代码:

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);
    }
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

也许有用。祝你好运。

使用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);
    }
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
在片段中使用“getActivity()”而不是“this”。要使设备视图灵活,请使用以下代码:

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);
    }
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

也许有用。祝你好运。

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

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

<resources>
    <bool name="isTablet">true</bool>
</resources>
资料来源:


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

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

<resources>
    <bool name="isTablet">true</bool>
</resources>
资料来源:


胡乱猜测:制作两个不同的应用程序?@Rotwang 2个不同的应用程序是一个非常蹩脚的游戏solution@deadfish但这是他们在创意上的做法。那么,是否所有以苹果为中心的开发者都是蹩脚的开发者呢?我喜欢你胡乱猜测的方式:制作两个不同的应用程序?Rotwang 2 distinct apps是一个非常蹩脚的程序solution@deadfish但这是他们在创意上的做法。那么,所有以苹果为中心的开发者都是开发者吗?我喜欢你的想法,所以没有办法在xml中设置它?res文件夹中的值可以在运行应用程序之后使用,而不是之前。由于res文件夹中有多个命名文件夹,即values-sw600dp或values-landscape,您只能处理特定情况。我给你的答案是imho是最好和安全的。所以没有办法在xml中设置它?res文件夹中的值可以在运行应用程序后使用,imho不能在运行应用程序之前使用。由于res文件夹中有多个命名文件夹,即values-sw600dp或values-landscape,您只能处理特定情况。我给你的答案是最好和安全的。