Android设备屏幕的尺寸是各式各样的,如小米是4英寸的,Xoom平板是10英寸;分辨率也千奇百怪,800×480,960×540等;Android版本的碎片化问题更是萦绕于心,不过在设计应用时可以分为两大块:3.0之前的版本和3.0之后的版本。这种情况会带来什么问题我们用三个假设来说明一下。

1. 假设你的手上有两个4英寸的设备,设备A的分辨率是800×480,设备B的分辨率是1600×960。你在设备A上设计了一个64×64像素的图标,感觉它大小正合适,但放到设备B上的时候,这个图标看上去就只有之前一半大小了。 2. 假设你手上的两个设备,设备A是4英寸,设备B是10英寸。在设备A上方放了一个tab控件,有三个页签。放到设备B上看时tab控件的三个页签被拉得很长,本来放6个页签的空间只放了三个页签。 3. 假设你手上的两个设备,设备A装的是Android2.3,设备B装的是Android4.0,而设备B没有menu建,风格也不一样。你发现两个设备上用同一套风格的皮肤并不合适。

Google提供了一套体系去解决这些问题。我们再回到上面的那张图,drawable文件夹有ldpi、mdpi、hdpi、xhdpi四种。dpi指像素/英寸,而ldpi指120,mdpi指160,hdpi指240,xhdpi指320。小米手机是4英寸、854×480的分辨率,那么小米手机的dpi就是854的平方加480的平方和开2次方后除以4,结果大约是245。如果应用安装在小米手机上,那么系统会调用图中drawable-hdpi里面的资源。这样,你只要做4套资源分别放在drawable-ldpi、drawable-mdpi、drawable-hdpi以及drawable-xdpi下(图标可以按照3:4:6:8的比例制作图片资源),那么就可以解决上面假设1当中提到的问题。

对于相同dpi、但尺寸不一样的设备,可以通过layout文件控制各种资源的布局。Google将设备分为small(2~3英寸)、normal(4英寸左右)、large(5~7英寸)、xlarge(7英寸以上)。在上面的假设2种,我们可以在layout-normal里配置3个页签的tab栏,在layout-xlarge里配置6个页签的tab栏。如果应用在所有设备上布局都一样,那么就不用考虑针对不同尺寸的layout。从图中那些layout*文件夹可以看出,该应用在hdpi及xhdpi上支持横竖屏,而且横竖屏的布局不一致,但没有考虑不同尺寸的设备使用不同布局的情况。

Android3.0之前的风格与Android3.0(包含3.0)之后的风格区别很大,图中那个应用就使用了两种风格的资源及布局。Android2.3的小米会使用drawable-hdpi及layout-hdpi当中的文件,而Android4.0的小米就会使用drawable-hdpi-v11及layout-hdpi-v11里面的文件。

更多相关文章

  1. 用android实现GB28181前端设备接入平台
  2. 【已解决】Android真机设备调试时LogCat的日志无法输出的问题
  3. 编程回忆之Android回忆(蓝牙BluetoothAdapter的搜索和连接)
  4. Android应用程序访问linux驱动第一步:实现并测试Linux驱动
  5. Android(安卓)开发者和设计师必须了解的颜色知识
  6. 使用adbWireless无线调试Android真机设备
  7. Android(安卓)8.0 以上获取设备序列号, Android(安卓)4.4 - Andro
  8. Google 或强制 OEM 预装 20 款应用,给你一个不Root的理由
  9. Android设备通过网络adb 调试

随机推荐

  1. es6结构赋值+DOM节点的增删改查+自定义属
  2. 给购物车加上选择时自动计算功能
  3. 仿京东移动端首页
  4. 第四课 box-sizing、伪类、媒体查询移动
  5. js变量、常量、函数类型、作用域、闭包、
  6. Vue一个通用的组件传递点击事件的两种种
  7. JS实战(自动轮播图+购物车自动计算)
  8. makedown语法测试
  9. js 流程控制 和 DOM操作
  10. 如何开发一款前端工具