【发布时间】:2011-06-19 16:27:44
【问题描述】:
不同 Android 产品的所有不同分辨率都让我抓狂。
我编写的第一个 android 应用程序设计为支持三种常用的分辨率:240x320 (LDPI)、320x480 (MDPI) 和 480x800 (HDPI)。 480x854 对布局没有任何损害,因为它的宽度与 480x800 相同。
我还购买了以下设备来测试我的 Android 应用: 三星银河欧洲 (LDPI) HTC Desire Z (HDPI)
幸运的是,我的女朋友有一台 HTC Wildfire S (MDPI),所以我已经涵盖了大多数分辨率。
但是今天,我的兄弟在他的新 HTC Sensation 上下载了我的应用程序,该应用程序还有另一个分辨率 540x960(HDPI?)。哪个没有按应有的方式显示我的应用程序,并且可能大多数平板电脑也无法正确显示它。
我对我的第一个应用程序所做的是读出密度,然后设置参数:
public void set_ui_parameters() {
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
if(metrics.densityDpi == DisplayMetrics.DENSITY_HIGH){
textSize = 35;
timeWidth = 80;
dayWidth = 110;
moneyWidth = 50;
} else if(metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM){
textSize = 35;
timeWidth = 53;
dayWidth = 73;
moneyWidth = 33;
} else if(metrics.densityDpi == DisplayMetrics.DENSITY_LOW){
textSize = 28;
timeWidth = 40;
dayWidth = 55;
moneyWidth = 25;
}
}
除了参数之外,我还为 LDPI、MDPI 和 HDPI 创建了可绘制对象。这适用于上述分辨率,但这取决于屏幕分辨率 i.c.w。屏幕尺寸和失败,例如 540x960 的 HTC sensatoin。
我知道并非所有分辨率都经常使用,但我希望尽可能多地支持。 Stats of Screen Sizes and Densities
我多次阅读Supporting Multiple Screens,但没有找到这个“问题”的明确答案。
那么我应该读出分辨率并根据分辨率而不是密度来设置参数吗?这是明智的做法吗?或者您如何应对?
非常感谢您的信息!
【问题讨论】:
标签: android layout drawable screen-resolution