您好我希望了解这些,以便我可以为我的应用程序提供更好的布局和UI exp。我希望我的应用必须只能在纵向模式下运行,以防我可以在AndroidManifest.xml
中设置的手机
<activity
android:name=".SplashActivity"
android:label="@string/title_activity_splash"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
但这将适用于所有手机和平板电脑。如果我这样做,那么当然我的布局在7英寸和10英寸屏幕上看起来不太好。
如何在7英寸和10英寸屏幕上设置我的应用程序在移动电话和横向模式下以纵向模式运行。
提前致谢。
答案 0 :(得分:1)
在values
文件夹中创建一个名为bools.xml的新文件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="bool" name="isLargeLayout">false</item>
</resources>
在名为bools.xml的values-large
文件夹中创建另一个文件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="bool" name="isLargeLayout">true</item>
</resources>
现在在您的活动中,在致电setContentView
之前获取此资源并根据其价值决定港口或土地方向:
boolean isLargeLayout = getResources().getBoolean(R.bool.isLargeLayout);
if(isLargeLayout) {
// Tablet Mode
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
// Handset Mode
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
答案 1 :(得分:0)
使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
以编程方式设置它;
您可以获得如下屏幕尺寸:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
如果您不在活动中,可以通过WINDOW_SERVICE获取默认显示:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
在引入getSize之前(在API级别13中),您可以使用现已弃用的getWidth和getHeight方法。