原文地址:http://www.rickystudio.org/android/multipx.html
应用程序的适配多分辨率,是个很重要的问题,UI的设计,很令人头痛。。。。。
随着时间的推移,android手机应用的开发者,慢慢会受到以下困扰,目前市场上android操作系统的手机分辨率不统一,我们开发的产品能否在不同的分辨率下良好的工作,最起码不至于面目全非,确实是我们比较头疼的问题,本文将带你一步步解决这个问题。
首先我们介绍几个概念,都是一些专业术语,但对大家来说并不陌生。准备好了吗?开始了…
- dpi(Dots Per Inch,点每英寸): 是指输出分辨率,针对于输出设备而言的,在这里是指每英寸的物理光点数,用来表示手机的分辨率,可以反映屏幕的清晰度。
- ppi(Pixels Per Inch,像素每英寸): 是指输入分辨率,针对于输入设备而言的,图像ppi值越高,画面的细节就越丰富,因为单位面积的像素数量更多,数码相机拍出来的图片常见的有72ppi,180ppi和300ppi等。
- dip(Device Independent Pixels,设备独立像素): 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。(VGA在这是指像素总数640*480)
- density像素密度: android中160DPI密度系数是1。(个人感觉这里和dpi是一个概念,只是单位不同)
这里提到的WVGA、HVGA、QVGA,通常被表示为手机的分辨率,实则不然。率中文字典中的解释为比值,两数之比。VGA只是一个数值,不是一个比值。而上文提到的dpi确是一个比值。它的计算方法为:dpi=对角线的像素值/屏幕尺寸。
实战篇 布局中使用dip,在layout.xml中使用dp单位,比如10dp。如果在java代码中则需要通过一个计算。首先计算出屏幕的density :
如果你的图片大小是10*20像素,那么实际显示 widthpx = 10*density,heightpx = 20*density。 我们也需要为android手机提供3套布局文件和3套UI图标。
总结,如果要考虑屏幕大小, 需要以320*480的屏幕为参照,但是即使是这样, 对于更小的屏幕还是会有问题。所以, 看你要支持的最小屏幕是什么, 就按照最小屏幕来编程。以上仅代表本人观点,如果错误请留言指正。
如下图: