【发布时间】:2015-02-19 17:37:49
【问题描述】:
我刚开始进行 android 开发,我在 android studio 上构建了一个应用程序,我想让我的应用程序在所有设备上都具有相同的设计:
三星 Galaxy S4 => 1080x1290 ; 5.0”
Galaxy Nexus => 720x1280 ; 4.7”
Nexus 4 => 768x1280 ; 4.7”
摩托罗拉 Droid Razr M => 540x960 ; 4.3”
Nexus S => 480x800 ; 4”
银河 S2 => 480x800 ; 4.3”
银河王牌 => 320x480 ; 3.5”
银河注 => 800x1280 ; 5.3”
Galaxy Note II => 720x1280 ; 5.5”
Nexus 10 => 2560 x 1600 ; 10.1”
Galaxy Tab 10.1 => 1280*800 ; 10.1”
Galaxy Note 8.0 => 1280*800 ; 8.0”
Galaxy Tab 7.7 => 1280*800 ; 7.7”
Nexus 7 => 1280*800 ; 7.0”
银河标签 => 1024*600 ; 7.0”
我在这里阅读了这些和很多问题
http://developer.android.com/training/multiscreen/index.html
http://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts
我在“dp”中使用了宽度/高度,并用所有项目制作了这个
android:layout_margin
android:paddingLeft
android:paddingRight
android:paddingTop
android:paddingBottom
它工作正常,但据我所知,有一种方法可以读取设备屏幕,然后决定在应用程序中打开哪个布局,假设我有一个布局并且我有这些尺寸
res/layout/main_activity.xml # 用于手机(小于 600dp 可用宽度) res/layout-sw600dp/main_activity.xml # 适用于 7 英寸平板电脑(600dp 宽和更大) res/layout-sw720dp/main_activity.xml # 适用于 10” 平板电脑(720dp 宽和更大)
我的问题是:我如何编写我的 java 活动来读取我的应用程序在其上运行的设备屏幕,然后决定打开哪个布局,就像设备是 S2 一样,然后 java 做出这样的事情:
if (tabletDeviceSize) {
//use tablet support layout
} else
{
//another layout for mobile support
}
我看到了这段代码,但我需要完整的,因为我的编码并不完美:(
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
switch(metrics.densityDpi){
case DisplayMetrics.DENSITY_LOW:
break;
case DisplayMetrics.DENSITY_MEDIUM:
break;
case DisplayMetrics.DENSITY_HIGH:
break;
}
【问题讨论】:
标签: android layout screen-orientation screen-size android-screen-support