Android分辨率

1. Android中px、dp、sp详解

1.1. 名称解释

px(pixel): 即像素,1px代表屏幕上的一个物理的像素点。但px单位不被建议使用。由于分辨率不同,同样像素大小的图片在不同手机显示的实际大小可能不同。要用到px的情况是需要画1像素表格线或阴影线的时候,如果用其他单位画则会显得模糊。

dp(device independent pixel): dp是最常用也是最难理解的尺寸单位。与像素密度密切相关。

sp(scale independent pixel): 即与缩放无关的抽象像素。sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时,1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字体尺寸以后的效果——窗口大小不变,只有文字大小改变。

屏幕像素密度:
ldpi:低密度屏幕;约为 120dpi。
mdpi:中等密度(传统 HVGA)屏幕;约为 160dpi。
hdpi:高密度屏幕;约为 240dpi。
xhdpi:超高密度屏幕;约为 320dpi。此项为 API 级别 8 中新增配置
xxhdpi:超超高密度屏幕;约为 480dpi。此项为 API 级别 16 中新增配置
xxxhdpi:超超超高密度屏幕使用(仅限启动器图标,请参阅“支持多种屏幕”中的注释);约为 640dpi。 此项为 API 级别 18 中新增配置
nodpi:它可用于您不希望缩放以匹配设备密度的位图资源。
tvdpi:密度介于 mdpi 和 hdpi 之间的屏幕;约为 213dpi。它并不是“主要”密度组, 主要用于电视,而大多数应用都不需要它。对于大多数应用而言,提供 mdpi 和 hdpi 资源便已足够,系统将根据需要对其进行缩放。此项为 API 级别 13 中新增配置
anydpi:此限定符适合所有屏幕密度,其优先级高于其他限定符。 这对于矢量可绘制对象很有用。 此项为 API 级别 21 中新增配置
六个主要密度之间的缩放比为 3:4:6:8:12:16(忽略 tvdpi 密度)。因此,9x9 (ldpi) 位图相当于 12x12 (mdpi)、18x18 (hdpi)、24x24 (xhdpi) 、36x36 (xxhdpi) 、48x48 (xxxhdpi) 位图,依此类推。

如果您认为图像资源在电视或其他某些设备上呈现的效果不够好,而想尝试使用 tvdpi 资源,则缩放比例为 1.33*mdpi。例如,mdpi 屏幕的 100px x 100px 图像应该相当于 tvdpi 的133px x 133px。

1.2. 代码获取
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels;  // 屏幕宽度(像素)
int height = metric.heightPixels;  // 屏幕高度(像素)
float density = metric.density;  // 屏幕密度(0.75/1.0/1.5/2.0/3.0/4.0)
int densityDpi = metric.densityDpi;  // 屏幕密度DPI(120/160/240/320/480/640)

2. Android提供资源

Android提供资源,主要讲述了资源文件如图片,字符串,颜色,尺寸等存放路径:
https://developer.android.com/guide/topics/resources/providing-resources.html?hl=zh-cn#BestMatch

营运商与国家网络代码,为实现特殊营运商需求时查询用:
https://zh.wikipedia.org/wiki/%E7%A7%BB%E5%8A%A8%E8%AE%BE%E5%A4%87%E7%BD%91%E7%BB%9C%E4%BB%A3%E7%A0%81

9.png图片,主要是为了拉伸图片用,用微信聊天时显示的文字背景
https://www.zhihu.com/question/23727292

Android Studio项目概览:
https://developer.android.com/studio/projects/index.html#mipmap

mipmap和drawable文件夹的区别:
应当将启动图标放到res/mipmap/文件夹中,而不是drawable/文件夹,来确保启动图片使用最好的分辨率图标。
http://blog.csdn.net/lihenair/article/details/49871453
https://developer.android.com/training/multiscreen/screendensities.html

3. 参考文档:

https://www.zhihu.com/question/19625584
https://www.jianshu.com/p/5b7c01e579ff
https://developer.android.com/guide/practices/screens_support.html?hl=zh-cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值