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

我一直致力于Android项目,旨在兼容Android手机和平板电脑。 在平板电脑上,该应用程序运行良好,看起来也很好。 然而,在手机上,我们一直在以编程方式和布局方式遇到问题(使用10.1英寸屏幕比4英寸屏幕容易得多)。 为了解决其中一些问题,我们决定停用屏幕方向,但仅限于手机版本,至少暂时。

问题很简单,我如何停用Android手机的屏幕方向,同时保持Android平板电脑的活动状态? 我知道我可以在清单文件中执行此操作,但是,这也将锁定我认为的平板电脑的方向。

您也可以从应用程序中执行此操作。

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

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

属性可以在这里find:

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


要检测,如果Android设备是平板电脑或手机,您应该使用此解决方案(不同的SO问答), https://stackoverflow.com/a/9308284/492624

首先,尽量避免这样做。 我之所以选择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  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } 

如果你在运行时处理它,通过获取屏幕大小然后RunTimeConfigurationChanges ,它似乎并非不可能,那么它可能会帮助你。

试试这个处理运行时更改 。

如果你获得成功,请告诉我..

谢谢。

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

  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

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