1、Android设备屏幕尺寸分布

首先看一下各种屏幕的尺寸和屏幕密度划分,下图是各种屏幕尺寸相应的范围:

从上图能够看出。相应normal尺寸的屏幕范围集中在常见的3到5寸屏之间。large尺寸相应的就主要是5到7寸的nottpad之类的设备。比如三星的Note和Nexus7平板等,再网上走就是平板电脑了。接下来是屏幕密度(dpi),须要说明的时,平时所说的屏幕分辨率事实上不能作为屏幕适配的根据,应该根据屏幕密度和屏幕尺寸来换算,屏幕密度是指每寸屏幕内容纳的像素数,屏幕密度从ldpi到xhdpi分别相应为120dpi、160dpi、240dpi、320dpi,屏幕密度越高、分辨率越高、屏幕尺寸越小就产生了视网膜屏幕。

在屏幕适配中。Google推荐针对mdpi(160dpi)进行设计。然后依照比例进行缩放,这样的方法主要针对位图(某些不规则图片,无法拉伸的图片,其它建议使用.9图)。以mdpi作为baseline,并以3:4:6:8的比例缩放:

2、Android资源文件

drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)

drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)

drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)

3、Android上常见度量单位

px(像素):屏幕上的点,绝对长度。与硬件相关。

in(英寸):长度单位。

mm(毫米):长度单位。

pt(磅):1/72英寸,point。

dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上。1dp = 1px。

dip:Density-independent pixel,同dp同样。

sp:在dp的基础上,还与比例无关。个人理解为是一个矢量图形单位。

在xml中定义大小,建议TextView使用sp。其它使用dp

相应关系

Android手机屏幕标准       相应图标尺寸标准   屏幕密度

xhdpi               1280*720                               96*96             320

hdpi                 480*800                               72*72             240

mdpi                480*320                               48*48             160

ldpi                  320*240                                36*36             120

模拟器上不同分辨率全部相应的信息: 



QVGA : {density=0.75, width=240, height=320, scaledDensity=0.75, xdpi=120.0, ydpi=120.0}

HVGA :  {density=1.0, width=320, height=480, scaledDensity=1.0, xdpi=160.0, ydpi=160.0}

WVGA : {density=1.5, width=480, height=800, scaledDensity=1.5, xdpi=240.0, ydpi=240.0}

当中。density为显示的逻辑分辨率;width及height就为屏幕分辨率(为绝对宽度与高度),与fields中的widthPixels及 heightPixels一致;scaleDensity与density一致;xdpi及ydpi为x方向与y方向的像素密度。

4、怎样计算密度(dpi)

1.标准是240*320画在1.5*2平方inch上。那么像每平方英寸有240*320/(1.5*2)=25600点,也就是一平方英寸的像素点为25600,所以dpi取为它的平方根160;假设你的dpi是120,那么它的密度就是0.75.

2. 密度不仅仅是与width有关。还与height有关,所以无论width是1.8还是1.3,它的密度都有可能是1;比方width是1.8。仅仅要它的 height是3/1.8的话,假设pixel为240*320的话,它的密度仍旧是1;相同假设width为1.3,仅仅要它的 height为3/1.3的话,像素点为240*320,则密度也是1.

3.320*480/(1.5*2)得到单位平方英寸的点为51200,所以单位平方英寸是240*320画在1.5*2屏幕的2倍。可是这是平方英寸啊,算密度的时候要开平方的啊,所以应该是2开平方,是1.414吧。大致密度为1.5。

5、px与dip的关系

Android中。在160dpi (mdpi)中, 1 dip= 1 px;

以此类推,在120dpi(ldpi)中, 1 dip = 0.75px;

在240dpi (hdpi)中,  1 dip = 1.5px;

在320dpi(xhdpi)中, 1dip = 2px。

6、怎样做到与密度无关

  假设屏幕密度为160,这时dp和sp和px是一样的。

1dp=1sp=1px,但假设使用px作单位,假设屏幕大小不变(假设还是3.2寸)。而屏 幕密度变成了320。那么原来TextView的宽度设成160px,在密度为320的3.2 寸屏幕里看要比在密度为160的3.2寸屏幕上看短了一半。但假设设置成160dp或160sp的话。

系统会自己主动将width属性值设置成320px的。

也就是160 * 320 / 160。

当中320 / 160可称为密度比例因子。也就是说。假设使用dp和sp。系统会依据屏幕密度的变化自己主动进行转换。

官方文档总结的计算公式为:pixels
= dps * (density /160).

使用dip作为View的单位。这样就能够同一时候兼容各种不同的分辨率。不会造成UI的不可兼容。

android UI设计时须要注意遵循的设计原则的更多相关文章

  1. 优化技术之Android UI优化

    2013-06-30 UI 优化 在Android中,最常用LinearLayout表示UI的布局.比起LinearLayout,在资源利用上,RelativeLayout会占用更少的资源而达到相同的 ...

  2. Android UI设计规则

    Android UI技巧 1.1 不该做什么 l  不要照搬你在其他平台的UI设计,应该让用户使用感觉是在真正使用一个Android软件,在你的LOGO显示和平台总体观感之间做好平衡 l  不要过度使 ...

  3. 详解 “Android UI”设计官方教程

    我们曾经给大家一个<MeeGo移动终端设备开发UI设计基础教程>,同时很多朋友都在寻找Android UI开发的教程,我们从Android的官方开发者博客找了一份幻灯片,介绍了一些Andr ...

  4. 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面

    [Android UI设计与开发]第05期:引导界面(五)实现应用程序只启动一次引导界面 jingqing 发表于 2013-7-11 14:42:02 浏览(229501) 这篇文章算是对整个引导界 ...

  5. 移动周报:十款最实用的Android UI设计工具

    上一周可以说是一个不断Mark周,从最实用的Android UI设计工具.免费移动应用测试框架推荐,到HTML5开发框架等等,各种开发工具.框架精彩丰呈,看得小伙伴们是不亦乐乎.当然,还有不容错过的M ...

  6. 【转】【Android UI设计与开发】之详解ActionBar的使用,androidactionbar

    原文网址:http://www.bkjia.com/Androidjc/895966.html [Android UI设计与开发]之详解ActionBar的使用,androidactionbar 详解 ...

  7. Android UI设计

    Android UI设计--PopupWindow显示位置设置 摘要: 当点击某个按钮并弹出PopupWindow时,PopupWindow左下角默认与按钮对齐,但是如果PopupWindow是下图的 ...

  8. android ui界面设计参数讲解

    百度文库: http://wenku.baidu.com/link?url=s66Hw6byBEzmjL77doYL1YQN4Y_39F7MovaHKs5mVGrzTDOQCAmiM-1N_6Cdm- ...

  9. Android UI 设计准则

    Design Principles  设计准则 These design principles were developed by and for the Android User Experienc ...

随机推荐

  1. Web Farm和Web Garden的区别

    在这篇博文中,我将确切剖析Web Farm和Web Garden的区别和原理,以及使用它们的利弊.进一步地,我将介绍如何在各个版本的IIS中创建Web Garden. 英文原文 | Abhijit J ...

  2. 为operamasks增加HTML扩展方式的组件调用

    #为operamasks增加HTML扩展方式的组件调用 ##背景 之前的[博文](http://www.cnblogs.com/p2227/p/3540858.html)中有提及到,发现easyui中 ...

  3. Flex里的命名空间,fx、mx、s【转】

    Flex 4带给我们的,是全新的命名空间.了解这些命名空间必定是一件好事情.Flex 4有三个非常重要的命名空间,分别是: xmlns:fx=”http://ns.adobe.com/mxml/200 ...

  4. KM算法详解+模板

    http://www.cnblogs.com/wenruo/p/5264235.html KM算法用来求二分图最大权完美匹配. 本文配合该博文服用更佳:趣写算法系列之--匈牙利算法 现在有N男N女,男 ...

  5. 深入理解PHP Opcode缓存原理

    什么是opcode缓存? 当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode).Opcode cache的目地是避免重复编译,减少 ...

  6. Hadoop学习笔记(2)

    Hadoop学习笔记(2) ——解读Hello World 上一章中,我们把hadoop下载.安装.运行起来,最后还执行了一个Hello world程序,看到了结果.现在我们就来解读一下这个Hello ...

  7. IIS7 503错误 Service Unavailable

    把相应的Application Pools的process model的Identity属性设置成“LocalSystem”就OK了

  8. POJ 2398 Toy Storage(计算几何,叉积判断点和线段的关系)

    Toy Storage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3146   Accepted: 1798 Descr ...

  9. linux常用基本命令

    Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们.   系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器 ...

  10. LIS (最长上升子序列)

    LIS两种写法 O(n^2) dp[i]表示以a[i]结尾的为LIS长度 #include <algorithm> #include <iostream> #include & ...