如何根据设备设置Android活动的方向?

6

我有一个问题,如果Android设备是平板电脑,我希望启用方向(纵向和横向),而如果设备是手机,则只希望在纵向模式下启用方向。

你能帮我解决这个问题吗?

谢谢, Nithin


请查看以下链接以了解有关Android屏幕旋转的问题:https://dev59.com/UlPTa4cB1Zd3GeqPgytX - Behnam Safari
请返回翻译后的文本:和http://www.workingfromhere.com/blog/2009/03/30/orientation-sensor-tips-in-android/ - Behnam Safari
+1 鼓励提出合理好问题。 - Pattabi Raman
5个回答

1

你有两种方法:

a)分别为手机和平板电脑创建不同的布局和可绘制集,并根据所需方向进行设计。

b)在运行时检查操作设备并设置方向。要检查设备,请检查以下参数并以编程方式设置方向:

  (1) Build.VERSION.SDK_INT
  (2) Configuration.SCREENLAYOUT_SIZE_MASK

1
尝试这个

它对我来说完美地运行了.....

if ( isXLargeScreen() )
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

这个函数用于区分平板电脑和手机,被称为上面的IF语句中使用......
public static boolean isXLargeScreen(Context context) {
return (context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
} 

0

您可以使用this类从系统属性中获取有关当前构建的设备信息。

要设置方向属性,请使用以下属性...

android:screenOrientation=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "sensor" | "fullSensor" | "nosensor"]

不起作用。这是在清单文件中硬编码!因此,平板电脑和手机都是一样的。 - nithinreddy
在实际运行程序之前,您无法动态设置方向。使用默认值,可以根据设备首选项和用户旋转屏幕的方式进行变化。或者使用“nosensor”来设置设备的首选方向。 - Shashank Kadne

0

获取设备屏幕的宽度和高度,如果分辨率小于平板电脑,则可以将应用程序的方向设置为纵向。

如果需要活动显示尺寸的像素,请使用getSize:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

如果不是Activity,则可以通过WINDOW_SERVICE获取默认的Display:

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

if(width<= (resolution width of tablet) && height<=(resolution height of tablet))
{
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT );
}

不要根据

android:screenOrientation

在清单中给出任何命令。


0

我自己也只是一个初学者,但也许可以通过针对特定的API级别或dpi来实现这一点?您可以为您所针对的不同设备提供替代资源。

例如:

res/layout/main.xml
res/layout-xhdpi/main.xml
res/layout-v11/main.xml

这里可以找到一个很好的文档链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接