我一直致力于Android项目,旨在与Android手机和平板电脑兼容。在平板电脑上,该应用程序运行良好,看起来也很好。然而,在手机上我们已经以编程方式和布局方式遇到问题(使用10.1英寸屏幕比4英寸屏幕容易得多)。为解决其中一些问题,我们决定暂停屏幕方向,但仅限于手机版本,至少暂时停用。
问题很简单,我如何停用Android手机的屏幕方向,同时保持Android平板电脑的活动状态?我知道我可以在清单文件中执行此操作,但是,这也会锁定我认为的平板电脑的方向。
答案 0 :(得分:12)
您也可以从应用程序中执行此操作。
Lock screen orientation (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://stackoverflow.com/a/9308284/492624
答案 1 :(得分:11)
首先,尽量避免这样做。我之所以选择todo,是因为它很容易解决复杂的问题。但实际上,尽量避免这样做。
如果你真的想要它,请使用以下代码。
在您的活动中创建一个方法:
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);
}
答案 2 :(得分:2)
如果你在运行时处理这个问题,通过获取屏幕大小然后制作RunTimeConfigurationChanges
,它似乎并非不可能,那么它可能对你有帮助。
如果你在这方面取得成功,请告诉我。
感谢。
答案 3 :(得分:1)
一种方法是为手机版和平板电脑版创建单独的活动。然后在android清单文件中修复它们的方向。另一种方法是检查当前使用的设备,并使用代码
在活动本身中修复方向 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
创建单独的活动是更好的方式,因为它易于维护标签和手机版本。