我需要根据设备类型设置强制定位设备,以便使用相关视图(平板电脑的横向视图和移动设备的纵向)旋转无法在设备上更改。
因为我想在应用程序启动期间为所有活动设置方向,我认为我应该识别主要活动中的设备类型,该活动由与视图相关的其他活动扩展。
我怎么能以正确的方式做到这一点?
非常感谢任何建议。
答案 0 :(得分:2)
在主要活动(Launcher活动)或Application类
中使用它if (isTablet(mContext))
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
else
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
public static boolean isTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)
>= Configuration.SCREENLAYOUT_SIZE_LARGE;
}
答案 1 :(得分:1)
在此处查看文档http://developer.android.com/google/play/publishing/multiple-apks.html
可以使用多个APK支持。但对于这样(似乎是)微小的要求来说,这是一件大武器。
基本上,您可以使用<supports-screens>
元素过滤清单文件中的目标设备,而不是定义android:screenOrientation
。所以,你需要的是单独的APK分开设备。
答案 2 :(得分:0)
如果您想为活动设定固定方向,则可以在manifest.xml中使用
android:screenOrientation="portrait" or
android:screenOrientation="landscape"
如果您不想修复它,那么您可以使用以下代码来获取屏幕尺寸
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
因此
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
答案 3 :(得分:0)
以下是other post的答案:
这是使用resources和size qualifiers的好方法。
将此bool资源放在res / values中作为bools.xml或其他任何内容(文件名在此处无关紧要):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="portrait_only">true</bool>
</resources>
将这个放在res / values-sw600dp和res / values-xlarge:
中<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="portrait_only">false</bool>
</resources>
然后,在您的活动的onCreate方法中,您可以这样做:
if(getResources().getBoolean(R.bool.portrait_only)){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
在最小宽度方向上超过600 dp的设备,或在Android 3.2之前的设备(平板电脑,基本上)上的x-large将表现得像平常,based on sensor and user-locked rotation等。其他一切(电话,漂亮)很多)只会是肖像。