不同Android产品的所有不同分辨率都让我非常吃惊。如何支持Android产品的所有不同分辨率
我写的第一个android应用程序是为支持三种常用分辨率而设计的:240x320(LDPI),320x480(MDPI)和480x800(HDPI)。 480x854对布局没有任何损害,因为它与480x800的宽度相同。
我也购买了如下设备来测试我的Android应用: 三星Galaxy欧洲(LDPI) 的HTC Desire Z(华电国际)
幸运的是我的女朋友有一个HTC野火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多次,但没有找到明确的答案,这个“问题”。
所以我应该读出分辨率并根据分辨率而不是密度设置参数?这是一件明智的事情,或者你如何处理这件事?
非常感谢您的信息!
由于这些值非常有用,但这并不能解决540x960分辨率的问题,或者我错了。由于SQRT(540^2 + 960^2)/4.3=256,15(HTC Sensation)与SQRT(480^2 + 800^2)/3.7=252,15(HTC Desire Z)大致相同并且都将被索引为HDPI,其中Sensation的屏幕宽度为60px。 – patrick
是啊...这里的问题是,你将无法处理100%的屏幕尺寸。所以,举例来说,如果你想要一个文本视图来精确覆盖屏幕的宽度,即使你应用了所有可能的技术,也会有一些设备将包装文本或其他东西。我的观点是,你不能让你的应用在所有设备上看起来完全一样,你必须遵守使它看起来更好。 – Cristian