一 ,android屏幕相关知识
屏幕大小:指屏幕对角线的长度,使用“寸”度量,如4.7寸手机
分 辨 率:分辨率指手机屏幕的像素点个数,如720*1280 指屏幕宽有720个像素点,高有1280个像素点
PPI每英寸像素:Pixels per Inch 又称为DPI(Dots Per Inch),即屏幕密度,由对角线像素点数除以屏幕大小 得到,通常达到400PPI已经是非常高的屏幕密度
问题:假如要在界面上显示一个长度为100px的线段,在分辨率为320*480的手机上,屏幕密度为160,分辨率为480*800屏幕上屏幕密度为240单位长度内像素点比屏幕密度为160的多,同样100像素在在两个不同分辨率屏幕上显示的长度就会不同,那么如何解决这个问题呢?为了能够在不同屏幕上得到相同长度的线段,我们改为dp作为线段长度单位
独立像素密度dp:density-independent pixel(密度无关像素)各种屏幕密度不同导致同样像素大小的长度,在不同密度的屏幕上的显示长度不同,相同长度的屏幕高密度屏幕包含更多像素点,android 系统使用mdpi即密度值为160的屏幕作为标准,在这个屏幕上1px=1dp,因此我们可以使用不同密度的比例计算出对应屏幕的px与dp比例关系。
关系推导 :对于屏幕密度为160的屏幕,1px=1dp, 100dp=100px, 那么对于像素密度为240的屏幕100dp表示多少px?
160 1dp=1px
240 1dp=? px
160/240=2/3 得出像素密度为240屏幕上1dp=3/2 px所以100dp的长度在像素密度为160的屏幕用100个像素点表示,而在像素密度为240的屏幕上用150像素点表示因此高密度屏幕上并不会缩短而显示长度一样 按此关系可以得到一个比例 ldpi : mdpi : hdpi : xhdpi : xxhdpi=3:4:6:8:12
谷歌官方提供了一个 换算公式 :px=dp*(dpi/160)
下面是《android群英传》一书提供的封装好的转换工具类
接下来再说说sp: scaled pixels(放大像素). 主要用于字体显示best for
textsize。根据google 的推荐TextView的字号最好使用sp 做单位,使用sp当用户字体设置发生改变时,字体可以自动调整。
最后由于本人水平有限,在此只是做一下简单总结,如有错误欢迎指出
强烈推荐官网学习