我们如何根据设备在Android中设置活动的方向?

时间:2012-02-13 06:47:25

标签: android android-orientation

我有一种情况,其中,如果Android设备是平板电脑,那么我希望启用方向(纵向和横向),而如果设备是手机,我希望方向仅在纵向模式。 你能帮帮我怎么做吗?

谢谢, 尼西

5 个答案:

答案 0 :(得分:1)

您有两种方法:

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

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

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

答案 1 :(得分: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;
} 

答案 2 :(得分:0)

您可以使用this类来获取有关当前版本的设备信息,这些信息是从系统属性中提取的。

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

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

答案 3 :(得分:0)

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

如果需要以活动像素为单位的显示尺寸,可以使用getSize:

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

如果不是活动,您可以通过WINDOW_SERVICE获得默认显示:

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 );
}

不要在清单中根据

给出任何命令
  

机器人:screenOrientation

答案 4 :(得分:0)

我自己只是一个初学者,但也许可以通过定位特定的API级别或dpi来实现这一目标?您可以为要定位的不同设备提供备用资源。

例如:

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

可以找到一份好的文档here