Android - 仅限手机上的强制活动

时间:2013-12-05 18:02:51

标签: android android-orientation

编辑:我正在进行上面的编辑,因为我认为我的问题需要重新措辞。

我的主要节目中有一条线用于下面的某个场景:

android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize"

这会将场景锁定为肖像。我需要的是一种在java中以编程方式解锁它的方法,并且通常的方式似乎没有起作用。我下面的代码块实际上是正确的,我在其他地方只是有错误的代码阻止它工作。


我想知道是否有一种方法可以强制特定活动在手机上显示为纵向,同时在平板电脑或任何其他更大的设备上仍允许其为纵向或横向?

我的情况比大多数类似的情况稍微复杂一点,因为我正在使用的活动继承自另一个我无法改变的活动类。出于某种原因,如果从手机调用onCreate(),其他活动将崩溃,因此我不能只使用“setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);”在onCreate()中,因为在调用super.onCreate()时应用程序仍然崩溃。

我尝试将活动锁定在清单中的肖像,然后将其添加到onCreate:

if(!mIsPhone)
    {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
    }

然而,这没有做任何事情。平板电脑上的场景仍被锁定为肖像。

1 个答案:

答案 0 :(得分:3)

首先,您可以使用以下方法查看设备是手机还是平板电脑:

public static boolean isTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout
        & Configuration.SCREENLAYOUT_SIZE_MASK)
        >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}

通过以下方式找到设定方向后:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);