px和dp的关系
px是什么:
px就是屏幕中点,是基本显示单位。
场景1:
手机常见的分辨率:
480*800
尺寸:3英寸 5英寸
得到数据:在当前手机每一英寸上面,有多少像素?
1英寸 = 160px
场景2:
手机常见的分辨率:
720*1200
尺寸:3英寸 5英寸
得到数据:在当前手机每一英寸上面,有多少像素?
1英寸 = 240px = 160*1.5 px
场景3:
手机常见的分辨率:
960*1600
尺寸:3英寸 5英寸
得到数据:在当前手机每一英寸上面,有多少像素?
1英寸 = 320px = 160*2 px
现在有一个布局文件 xx_layout.xml,该布局文件中有一个
TextView,设置了当前的TextView宽为 160px,
问:当前布局文件加载到上面三台手机的时候,TextView最终呈现
出来的宽(英寸)是多少?
手机1
480*800 3英寸*5英寸
1英寸=160px
1英寸
手机2
720*1200 3英寸*5英寸
1英寸=240px
160*1/240 = 2/3英寸
手机3
960*1600 3英寸*5英寸
1英寸=320px
160*1/320 = 0.5英寸
总结:
如果采用px作为界面控件的宽高单位,
那么同样的布局文件在不同分辨率的手机上面
显示出来的实际宽高(英寸)就不一样,这不是
我们要的效果。
我们希望,一旦设定好控件的宽高,
无论在什么手机上面展示,宽高都是一定。
长度单位有两种
绝对的长度单位
mm cm m inch
相对的长度单位
px
安卓有自己的绝对长度单位-dp(dip)
dip -- dp
device independent pixel
设备独立像素
安卓规定:
无论在什么分辨率的手机上面,
160dp = 1英寸。
手机1 mdip middle中等分辨率
480*800 3英寸*5英寸
1英寸=160px=160dp
1dp = 1px
手机2 hdip hight 高分辨率手机
720*1200 3英寸*5英寸
1英寸=240px=160dp
1dp = 1.5 px
手机3 xhdip extra超 high 超高分辨率
960*1600 3英寸*5英寸
1英寸=320px=160dp
1dp = 2px
手机4: xxh 超超高分辨率
红米note2
1dp = 3px
dpi
dots per inch
每英寸有多少像素
注:只要实在Java中获取的宽高,那么单位一定是像素
float scale = getResources().getDisplayMetrics().density;
//得到密度,密度就是px和dp的比值。
int height=(int)(160*scale+0.5);
//比如下面这种情况1.5密度*5dp=7.5px,但是像素绝对不会有小数,为了避免这种情况,所以我们+0.5
王学岗Android中dp,px,介绍
猜你喜欢
转载自blog.csdn.net/qczg_wxg/article/details/84679381
今日推荐
周排行