2012-02-13 96 views
6

我有一种情况,其中,如果Android设备是平板电脑,那么我希望启用方向(纵向和横向),而如果设备是手机,我希望方向仅限于纵向模式。 你能帮我怎么做?我们如何根据设备设置Android中的活动方向?

感谢, 尼西

+0

+ 1 for nice Concept。 – Praveenkumar 2012-02-13 06:48:48

+0

检查http://stackoverflow.com/questions/4616176/android-orientation-change – 2012-02-13 06:54:45

+0

和http://www.workingfromhere。com/blog/2009/03/30/orientation-sensor-tips-in-android/ – 2012-02-13 06:55:05

回答

0

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

要设置取向性,使用后的属性...

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

不起作用。这是在清单中硬编码!所以平板电脑和手机也一样。 – nithinreddy 2012-02-13 07:28:38

+0

在实际运行程序之前,您无法动态设置方向。使用默认设置,可以根据设备偏好以及用户旋转屏幕的方式来改变设置。或者“nosensor”用于设备的首选方向。 – 2012-02-13 07:33:42

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

不给任何命令在清单基础上

android:screenOrientation

+0

为什么downvote?这个答案不可能吗? – 2012-02-13 07:10:28

+0

我认为这个工程..我会给它一个镜头..谢谢! – nithinreddy 2012-02-13 07:28:08

0

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

例如:

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

的一个好文件,可以发现here

1

你有2种方法:

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; 
} 
相关问题