我如何锁定手机的屏幕方向,而不是平板电脑?(Android)



我一直在做一个安卓项目,这个项目旨在兼容安卓手机和平板电脑。在平板电脑上,这款应用运行得很好,看起来也不错。然而,在手机上,我们遇到了编程和布局方面的问题(使用10.1英寸的屏幕比使用4英寸的屏幕容易得多)。为了解决这些问题,我们决定取消屏幕方向,但只针对手机版本,至少暂时。

问题很简单,我如何禁用Android手机的屏幕方向,同时保持Android平板电脑的激活?我知道我可以在manifest文件中这样做,但是,我相信这也会锁定平板电脑的方向。

首先,尽量避免这样做。我选择这样做是因为这是一个简单的解决复杂问题的方法。但说真的,尽量避免这样做。

如果你真的想这样做,使用下面的代码。

在activity中创建一个方法:

    private boolean isTablet() {
        return (this.getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK)
            >= Configuration.SCREENLAYOUT_SIZE_LARGE;
    }

然后在onCreate中执行如下操作:

    if (!isTablet()) {
        // stop screen rotation on phones because <explain>
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }

您也可以在应用程序中这样做。

锁定屏幕方向(Android)
http://developer.android.com/reference/android/app/Activity.html setRequestedOrientation (int)

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

和属性可以在这里找到:

http://developer.android.com/reference/android/R.attr.html screenOrientation


要检测,如果Android设备是Tablet还是Phone,你应该使用这个解决方案(不同的SO Q&A), https://stackoverflow.com/a/9308284/492624

如果你在运行时处理这个问题,通过获取屏幕尺寸然后制作RunTimeConfigurationChanges,那么它可能会对你有所帮助。

Try this Handling Runtime Changes.

如果你成功了,告诉我一声。

谢谢。

一种方法是,为手机版本和平板版本创建单独的活动。然后在android manifest文件中修复它们的方向。另一种方法是检查当前正在使用的设备,并使用代码

修复活动本身的方向
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

创建单独的活动是更好的方法,因为它易于维护选项卡和电话版本。

最新更新