概念:

一、几个概念

1、ppi-pixel per inch,ppi单位长度像素个数。计算方法是宽宽 + 长长,然后开方(即对角线的像素个数),然后除以对角线的长度。

例如iphone4s:960x640像素,对角线3.5英寸,则ppi=(960*960 +640*640)/ 3.5 = 329.6ppi

2、dpi-dolt per inch,dpi单位长度像素点数,感觉和ppi定义类似,其计算方法也一样,可以粗略理解为两者一样,只不过这里一个点代表一个像素.如果A手机屏幕宽度是5CM,B手机宽度是10Cm,宽度分辨率都是320,那么显示同一张图片时,B手机上的图片就会显的大一点,并且没有A手机上的清晰。为什么呢,这就是我们常见的密度(DPI)概念,即每英寸多少个点。—–(理解dp:屏幕分辨率;px:像素)

3、dip - density-independent pixel:dip密度无关像素,其实并不是像素,与pixel有如下转换关系:

px = dp * (dip / 160); (之所以要除以160,是因为定义对于dip为160的屏幕,其一个像素与一个dp相同)

4、屏幕大小(Screen Size):屏幕的实际尺寸,指屏幕对角线的长度,单位inch,android中根据屏幕大小,把屏幕氛围几个等级:small、normal、large、extra-large

5、屏幕密度(Screen density):用dpi来表示,android把屏幕密度分为:low、medium, high、extra high

6、sp(scaled-independent pixel):可以把它理解为dip(或dp),只不过专门用来表示字符大小

7、分辨率:显示器能够示显的像素多少。(水平×垂直 如1028×768)

ldpi: 屏幕密度为120的手机设备

mdpi: 屏幕密度为160的手机设备(此为baseline,其他均以此为基准,在此设备上,1dp = 1px)

hdpi: 屏幕密度为240的手机设备

xhdpi: 屏幕密度为320的手机设备

xxhdpi:屏幕密度为480的手机设备

如果是480x800的切图,则应该放入drawable-hdpi目录下,

如果是320x480的切图,则应该放在mdpi目录下。

如果是720x1280的切图,则应该放在xhdpi目录下。

把同样图片放在不同的drawable文件夹中,显示效果是不一样的。效果如下

Tip1:屏幕密度的应用:

已知:屏幕密度(Screen density):用dpi来表示,android把屏幕密度分为:low、medium, high、extra high。在实际应用中,与图片显示有关。

从上表可以得出如下结论

1. 图片放在drawable中,等同于放在drawable-mdpi中,原因为:drawable目录不具有屏幕密度特性,所以采用基准值,即mdpi

2. 图片放在某个特定drawable中,比如drawable-hdpi,如果设备的屏幕密度高于当前drawable目录所代表的密度,则图片会被放大,否则会被缩小;放大或缩小比例 = 设备屏幕密度 / drawable目录所代表的屏幕密度

3. 为了更全面的适配所有设备,我们应该提供一套针对主流屏幕密度的图片(目前为hdpi或xhdpi),其他密度通过系统自动缩放得到图片

Tip2:dp

dp工作原理

最关键要记住一个公式:

android在计算pixel值时会首先判断屏幕的密度。如果我们把mdpi设为1,则hdpi就等于1.5. 如果我们使用dp为单位,android在转换为pixel时会依据下面公式:

px = dp * density;

像素数 = dp * 每英寸的逻辑点数。

dp表示独立像素密度,所谓独立,就是不依赖与屏幕的密度。

从本质上来看,dp其实表示是相同的物理长度,注:不是以像素为单位,而是以inch为单位。

例如对于mdpi,长度为m inch的屏幕,其像素数为n1,dp数为n2.

对于hdpi,也是长度为m inch,包含的像素数为n1 * 1.5. 根据公式可以算出,其dp值为n1 * 1.5 / 1.5 = n1. 对于xhdpi的也是n1.

即:相同的物理长度其dp值相同。

float a = this.getResources().getDisplayMetrics().density; //dp

int b = this.getResources().getDisplayMetrics().densityDpi; //密度值

可以通过上面的代码来获取当前设备的屏幕密度,a为dp值,b为密度值,如a=1则表示你的设备屏幕类型为Mdpi

DisplayMetrics dm = new DisplayMetrics();

dm = cx.getApplicationContext().getResources().getDisplayMetrics();

int screenWidth = dm.widthPixels; 屏幕宽度

图片显示:

android系统加载图片资源遵循下面的规则:首先判断手机的屏幕密度,然后在相应的密度下文件夹中查找图片资源。如果找到,则进行显示。如果找不到,则会从drawable或者其他drawable-*文件夹中寻找。找到后,将文件夹所表示的密度与手机实际密度进行比较,从而缩放图片。例如在drawable下找到资源(等价于从drawable-mdpi),而手机又是hdpi的,这样android在显示图片时会将图片进行放大,以满足hdpi手机显示需要。不难想象,图片肯定会变模糊。

如果放错文件夹,系统会进行相应的缩放,使图片进行错误的缩放。例如hdpi的图片放到mdpi中,在hdpi的手机显示,会比原图片大

设计给切图,最好根据那个dpi呢?是都可以吗?一般应该给480*800的hdpi的切图。这样对于mdpi,可以自动缩小。图像显示质量不受影响。对于xdpi,放大幅度不大,图像显示质量影响较小。

那么为什么不用xhdpi呢,这样都是缩小图像不是更好吗?有两个理由,一是增大了apk的尺寸,另一个就是容易引起切图的变形,影响显示。主要是对于.9的图片,有对某一方向进行了压缩,如果设置时,拉伸区域太小,再压缩时可能变形。当然这也不是绝对的,可以通过增大.9.png文件的拉伸区域来实现。 或许还有个理由,xhpi的机型比较不占多数。

android 屏幕密度范围,Android屏幕密度相关推荐

  1. android屏幕密度高度,Android获取常用辅助方法(获取屏幕高度、宽度、密度、通知栏高度、截图)...

    我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现.下面就分享一下Android中常用的一些辅助方法: 获取屏幕高度: /** * 获得屏幕高度 * @para ...

  2. 【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题

    . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19698511 . 最近遇到了一系列的屏幕适配问题, 以及 ...

  3. android 屏幕分辨率 屏幕密度,Android屏幕适配——多分辨率多屏幕密度

    为什么要适配,适配的好处等等这里就不说了,直接说我们要怎么适配,请看下面的内容. 1.重要概念 px:pixel,像素Android原生API,UI设计计量单位,如获取屏幕宽高. 屏幕分辨率:指在纵向 ...

  4. android计算手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法

    手机分辨率基础知识(DPI,DIP计算) 1.术语和概念 术语 说明 备注 Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 摩托 ...

  5. android 密度像素,Android屏幕密度适配问题之px,dp,sp等详细介绍

    一  ,android屏幕相关知识 屏幕大小:指屏幕对角线的长度,使用"寸"度量,如4.7寸手机 分 辨  率:分辨率指手机屏幕的像素点个数,如720*1280 指屏幕宽有720个 ...

  6. Android 屏幕尺寸、屏幕分辨率(px)、屏幕像素密度(dpi)、密度无关像素(dp/dip)、屏幕适配

    1. dp , dpi , px 关系 (假设已经熟悉了基本概念,也可以参考最后的链接)  2. 运行时dp 如何转换成 px  3.  使用dp 和 px 设计结果比较 参考: Android屏幕适 ...

  7. android屏幕密度高度,android分辨率,屏幕尺寸,屏幕密度关系

    名词定义 分辨率 分辨率就是手机屏幕的像素点数,一般描述成屏幕的"宽×高",安卓手机屏幕常见的分辨率有480×800.720×1280.1080×1920等.720×1280表示此 ...

  8. 【Android 屏幕适配】屏幕适配基础概念 ① ( Android 与 iOS 屏幕宽高比种类 | 屏幕像素密度 DPI )

    文章目录 一.Android 与 iOS 屏幕宽高比种类 二.屏幕像素密度 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 声明受限屏幕支持 一.Android 与 iOS 屏幕宽高 ...

  9. android的设计规范了解,Android设计规范常识:四种屏幕尺寸和四种密度

    看到上面这个标题:肯定知道xd素材中文网这节课需要跟大家聊的大概主题了吧! 没错,就是Android设计规范当中必须了解的四种屏幕尺寸和四种密度分类.为什么只有Android界面上会产生四种屏幕尺寸和 ...

  10. 【Android 屏幕适配】屏幕适配基础概念 ③ ( 屏幕像素密度 DPI 与素材大小关联 | 屏幕像素密度 DPI 与 屏幕密度限定符关联 )

    文章目录 一.屏幕像素密度 DPI 与素材大小关联 二.屏幕像素密度 DPI 与 屏幕密度限定符 xhdpi 关联 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 声明受限屏幕支持 ...

最新文章

  1. ASCII、Unicode、GBK和UTF-8字符编码的区别联系
  2. linux 安装分区设置分区大小
  3. WINCE对USB HOST供电的控制
  4. 马上着手开发 iOS 应用程序-1.1设置
  5. 基于VHDL的RISC microprocessor设计
  6. read/fread write/fwrite 的区别
  7. 程序员转行房屋设计师,本来不信,当看到楼梯后,我信了!
  8. 基础知识—循环语句-while
  9. android preferenceActivity的用法
  10. 寻找节点d=n的节点算法
  11. 使用 Metasploit 利用 MySQL 默认空密码或弱密码漏洞 (CVE-2002-1809, CNNVD-200212-263, CVE-1999-0502)
  12. 实际应用3: 图书数据可视化分析(基于matplotlib的python数据可视化)
  13. 学嵌入式需要报培训班吗?
  14. IE6 下 如何 画三角形 ! 方法
  15. LVGL8学习之msgbox
  16. Qt示例程序打开失败,出现一个感叹号图标
  17. linux双显卡配置_linux双显卡配置 linux网络配置
  18. 2021年遥感类SCI期刊中科院分区排名与影响因子汇总
  19. linux中的fs文件夹,linux上使用eCryptFS加密文件夹的方法
  20. 1.3 创建弧形轴网

热门文章

  1. zookeeper实现动态感知服务器上下线
  2. 笔记本右侧键盘数字打不出来
  3. 工具优化篇之IDEA新UI+日常插件
  4. matlab胡良剑第五章,matlab数学实验第一至第四章答案(胡良剑)
  5. 基于余弦适应性骨架的差分进化算法
  6. python输入姓名输出欢迎你某某同学_2018-03-24 python 练习
  7. 【829】【06 信息检索策略和方法】
  8. 交换机端口mtu值最大_思科交换机基本配置命令全集-mtu值怎么设置
  9. [报错]CXF动态客户端报错:No operation was found with the name
  10. TSMaster1.4.2补丁包发布