引用:http://www.alibuybuy.com/posts/65453.html

参考apihttp://developer.android.com/guide/practices/screens_support.html

一、Android支持的多种屏幕

传统意义上,一般是是这么认为的:

ldpi: 对应分辨率240×320

mdpi: 对应分辨率320×480

hdpi:对应分辨率480×800或480×854

但实际上没有这么简单,直接看官方资料的下标,可以看到其实ldpi一样由480×800,甚至还有1024×600

低密度(ldpi 120) 中密度(mdpi 160) 高密度(hdpi 240) 超高密度(320 xhdpi)
小屏幕 QVGA (240×320) 480×640
中屏幕 WQVGA400 (240×400)
WQVGA432 (240×432)
HVGA (320×480) WVGA800 (480×800)
WVGA854 (480×854)
600×1024
640×960
大屏幕 WVGA800** (480×800)
WVGA854** (480×854)
WVGA800* (480×800)
WVGA854* (480×854)
600×1024
超大屏幕 1024×600 WXGA (1280×800)
1024×768
1280×768
1536×1152
1920×1152
1920×1200
2048×1536
2560×1536
2560×1600

二、如何分辨是ldpi、mdpi、hdpi?

为什么要分辨率ldpi、mdpi、hdpi?我的理解,是为了要在不同的屏幕密度下取得最好的显示效果。

从上一段来看,通过分辨率来看并不是很靠谱,那怎么样才靠谱?其实,只要我们知道屏幕分辨率、屏幕尺寸(对角线长度),就可以算出相应的屏幕密度,从而根据其范围得出属于那种屏幕密度。

我们可以根据长或者根据宽来计算出dpi,计算公式为:

dpi=宽/((尺寸^2 * 宽^2)/(宽^2 + 高^2))^(1/2)

= 长/((尺寸^2 * 长^2)/(宽^2 + 高^2))^(1/2)

此计算公式可以在excel中予以计算。

大概计算方法如下,以宽为例:

1.比如分辨率为320×480,则长宽比为1:1.5

2.比如屏幕尺寸为3.6”,则根据勾股定理,”长^2+宽^2=3.6^2″,即”宽^2+2.25*宽^2=12.96″,得出”宽^2=12.96/3.25″,则”宽=(12.96/3.25)^(1/2)= 1.9969″

3.宽为320px,分布在1.9969”上,因此密度为320/1.9969=160.2467

4.因此此密度为mdpi的密度

注:

1.此部分参考文章为:http://blog.sina.com.cn/s/blog_7377a8a20100qydh.html

2.两款计算dpi的应用

https://market.android.com/details?id=appinventor.ai_wenjiun1024.DPICalculato

https://market.android.com/details?id=com.andy.dpi

三、粗略的分辨率ldpi 、mdpi、hdpi

套用老资料,其实传统意义上的通过分辨率判断手机dpi,还是比较靠谱的:

ldpi: 对应分辨率240×320

mdpi: 对应分辨率320×480

hdpi:对应分辨率480×800或480×854

为什么呢?因为ldpi如果要是320×480,则需要4.8寸的屏幕,如果是480×800,则需要7.8寸的屏幕,如果mdpi是480×800,则需要5.2寸的屏幕,一般的手机屏幕不会这么大,所以还算靠谱。

当然,如果是分辨android pad的dpi,建议还是算一下吧。

四、如何适配之9-patch?

官方资料:http://developer.android.com/guide/developing/tools/draw9patch.html

简单来说,如果你的图片资源是可以拉伸的而不会变形或者模糊的,则完全可以使用9-patch的格式,而不用为不同的dpi提供不同的图片资源。

此格式经常用在背景性质的图片资源中。

android开发包提供了9-patch的制作工具,上方的划线指明横向可以拉伸的区域,左方的划线指明纵向可以拉伸的区域,下方的划线指明水平居中的区域,右方的划线指明垂直居中的区域。

在盆地的理解中,一般提供hdpi大小的图片,并制作为9-patch格式,此时的拉伸在mdpi、ldpi上基本都不会带来问题。

这部分网上有不少资料,这里就不再赘述了,上述的描述是为了盆地日后便于想起和理解。

五、如何适配指图标和其他图片

除了指明拉伸区域拉伸不变形的图片外,类似图标或者其他会变形的图片资源,最佳情况下需要分别针对不同的dpi提供不同的图片。

此处特别需要注意的是,假设不考虑xhdpi的支持,hdpi、mdpi、ldpi的支持,需要考虑相应的比例,即1.5:1:0.75,需要在相应比例关系下保持整数的像素值,否则可能会产生模糊的情况。

举个具体例子,某个图标在hdpi下大小为48×48,则mdpi和ldpi下分别为32×32和24×24,如果此图标在hdpi设定为50×50,则mdpi下50无法整除1.5,因此mdpi下图标不论图标设定为33×33还是34×34都会模糊(可能独立指定可以避免此情况,此部分不太了解)。

六、菜单图标和应用图标

这一部分在官方资料中描述的很全面,只是不少应用开发者没有按照规范来,比如桌面图标的在hdpi上分辨率虽然定义的是72×72,但实际上应该只占60×60(如果是正方形,则应该是56×56),而不少应用直接把图标设定为72×72,所以会发现android中很多图标比系统的图标大一些,就是这个缘故。

这一部分就直接参照官方文档吧,做法上也就是做三份,只是需要遵照文档来。

http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

七、小结

作为产品人员,了解这个的目的,是为了向UI人员协调相应的UI资源,以及和开发保持顺畅的沟通,如果不了解这个,可能事倍功半,所以,作为产品人员,还是了解下吧。

恩,暂时就这些了,等俺通读了官方文档后,再来补充吧。上述描述中错误的地方,也请不吝赐教。

更多相关文章

  1. android studio设置launcher图标的问题
  2. Android获取屏幕分辨率及DisplayMetrics简介
  3. Android wifi信号强度与图标对应关系
  4. 手机app图标显示为机器人或者不显示的解决办法
  5. Android 手机屏幕适配解决办法
  6. 还在为android图标适配烦恼?字体图标你值得拥有

随机推荐

  1. Android 带小圆圈的倒计时圆形进度条
  2. Android 如何更换屏幕上锁界面背景图片
  3. 从菜鸟到Android资深工程师的进阶之路
  4. android使用Navigation实现Fragment之间
  5. Android开发学习笔记——四大组件之Conte
  6. android模拟器安装及优化(集锦)
  7. Android的前景
  8. 利用android studio LinearLayout线性布
  9. Android中进行单元测试
  10. android中用jsonObject解析json数据