我一直在开发一个 Android 项目,旨在兼容 Android 手机和平板电脑。在平板电脑上,应用程序功能良好,外观也很好。但是,在手机上,我们遇到了很多程序和布局方面的问题(10.1 英寸屏幕比 4 英寸的屏幕更容易处理)。为了解决其中一些问题,我们已决定暂时仅为手机版本停用屏幕方向。
问题很简单,如何在 Android 手机上禁用屏幕方向,同时保持 Android 平板电脑的屏幕方向活跃?我知道我可以在清单文件中完成这个操作,但我相信这也会锁定平板电脑的屏幕方向。
我一直在开发一个 Android 项目,旨在兼容 Android 手机和平板电脑。在平板电脑上,应用程序功能良好,外观也很好。但是,在手机上,我们遇到了很多程序和布局方面的问题(10.1 英寸屏幕比 4 英寸的屏幕更容易处理)。为了解决其中一些问题,我们已决定暂时仅为手机版本停用屏幕方向。
问题很简单,如何在 Android 手机上禁用屏幕方向,同时保持 Android 平板电脑的屏幕方向活跃?我知道我可以在清单文件中完成这个操作,但我相信这也会锁定平板电脑的屏幕方向。
首先,试着避免这样做。我选择这样做是因为它可以轻松解决一个复杂的问题,但是真的,请尽量避免这样做。
如果您真的想这样做,请使用以下代码。
在您的活动中创建一个方法:
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设备是平板还是手机,您应该使用此解决方案(不同的SO Q&A),https://dev59.com/EWox5IYBdhLWcg3wVC1y#9308284
看起来,如果您在运行时获取屏幕大小并进行RunTimeConfigurationChanges
,那么这似乎是可能的。请尝试使用处理运行时更改。如果成功,请让我知道。
谢谢。
一种方法是,为手机版本和平板版本创建单独的活动。然后在Android清单文件中修复它们的方向。另一种方法是检查当前使用的设备,并使用代码在活动本身中固定方向。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);