我有一个问题,如果Android设备是平板电脑,我希望启用方向(纵向和横向),而如果设备是手机,则只希望在纵向模式下启用方向。
你能帮我解决这个问题吗?
谢谢, Nithin
我有一个问题,如果Android设备是平板电脑,我希望启用方向(纵向和横向),而如果设备是手机,则只希望在纵向模式下启用方向。
你能帮我解决这个问题吗?
谢谢, Nithin
你有两种方法:
a)分别为手机和平板电脑创建不同的布局和可绘制集,并根据所需方向进行设计。
b)在运行时检查操作设备并设置方向。要检查设备,请检查以下参数并以编程方式设置方向:
(1) Build.VERSION.SDK_INT
(2) Configuration.SCREENLAYOUT_SIZE_MASK
它对我来说完美地运行了.....
if ( isXLargeScreen() )
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
public static boolean isXLargeScreen(Context context) {
return (context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
}
您可以使用this类从系统属性中获取有关当前构建的设备信息。
要设置方向属性,请使用以下属性...
android:screenOrientation=["unspecified" | "user" | "behind" |
"landscape" | "portrait" |
"reverseLandscape" | "reversePortrait" |
"sensorLandscape" | "sensorPortrait" |
"sensor" | "fullSensor" | "nosensor"]
获取设备屏幕的宽度和高度,如果分辨率小于平板电脑,则可以将应用程序的方向设置为纵向。
如果需要活动显示尺寸的像素,请使用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
在清单中给出任何命令。
我自己也只是一个初学者,但也许可以通过针对特定的API级别或dpi来实现这一点?您可以为您所针对的不同设备提供替代资源。
例如:
res/layout/main.xml
res/layout-xhdpi/main.xml
res/layout-v11/main.xml
这里可以找到一个很好的文档链接。