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而不是像素,则几乎不必为每个密度创建不同的尺寸文件.当然,有时你必须这样做,但这取决于应用程序.
| 归档时间: |
|
| 查看次数: |
20145 次 |
| 最近记录: |