王学岗Android中dp,px,介绍

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


猜你喜欢

转载自blog.csdn.net/qczg_wxg/article/details/84679381