如何支持Android产品的所有不同分辨率

pat*_*ick 14 layout android screen-resolution drawable

不同Android产品的所有不同分辨率都让我疯狂.

我编写的第一个Android应用程序是为了支持三种常用分辨率而设计的:240x320(LDPI),320x480(MDPI)和480x800(HDPI).480x854对布局没有任何伤害,因为它具有与480x800相同的宽度.

我还购买了以下设备来测试我的Android应用程序:三星Galaxy Europe(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;
    }
}
Run Code Online (Sandbox Code Playgroud)

除了参数,我还为LDPI,MDPI和HDPI创建了drawable.这适用于上述分辨率,但这取决于屏幕分辨率icw屏幕尺寸,并且例如具有540x960的HTC sensatoin失败.

我知道并非所有决议都经常使用,但我想尽可能多地支持.屏幕尺寸和密度统计

我已多次阅读支持多个屏幕,但没有找到这个"问题"的明确答案.

那么我应该读出分辨率并根据分辨率而不是密度设置参数?这是一个聪明的事情或你如何处理这个?

非常感谢您的信息!

Cri*_*ian 30

您不必这样做以支持不同的密度.你要做的是创建不同的资源文件夹:

res/values-ldpi/dimens.xml
res/values-mdpi/dimens.xml
res/values-hdpi/dimens.xml
Run Code Online (Sandbox Code Playgroud)

然后Android将决定使用哪个文件.你可以有类似的东西:

<!-- in values-ldpi/dimens.xml -->
<dimen name="textSize">25dip</dimen>
Run Code Online (Sandbox Code Playgroud)

和..

<!-- in values-mdpi/dimens.xml -->
<dimen name="textSize">20dip</dimen>
Run Code Online (Sandbox Code Playgroud)

你不应该关心解决方案......有很多不同的分辨率大小,所以根据这个做出决定是一个地狱.

此外,如果使用dp而不是像素,则几乎不必为每个密度创建不同的尺寸文件.当然,有时你必须这样做,但这取决于应用程序.

  • 是的......这里的问题是你将无法处理100%的屏幕尺寸.因此,例如......如果您希望文本视图完全覆盖屏幕的宽度,即使您应用了所有可能的技术,也会有一些设备可以包装文本或其他东西.我的观点是,你不能让你的应用程序看起来完全符合你想要的所有设备...你必须符合使它看起来尽可能好. (2认同)