Android中度量单位的使用和关系

来源:互联网 发布:京东万象数据 编辑:程序博客网 时间:2024/06/10 03:59

度量单位

当指定Android用户界面上元素的大小时,应知道以下度量单位:

单位

说明

dp

与密度无关的像素(density-independent pixel)。1pd相当于160dpi的屏幕上的1像素。当在布局中指定视图尺寸时,推荐将dp作为度量单位。160dpi是Android假定的基准密度。当指的是密度无关的像素时,可以使用dp或dip。

sp

与比例无关的像素(scale-independent pixel)。与dp类似,推荐用于指定字体大小。

pt

磅。1磅等于1/72英寸。

px

像素。对应屏幕上的实际像素。不建议使用这一单位。

Android定义并可识别6种屏幕密度:

名称

dpi

密度

分辨率

低密度(ldpi)

120dpi

0.75

320*240

中密度(mdpi)

160dpi

1

480*320

高密度(hdpi)

240dpi

1.5

800*480

超高密度(xhdpi)

320dpi

2

1280*720

xxhdpi

480dpi

3

1920*1080

xxxhdpi

640dpi

4

2560 * 1440(2K分辨率)

xxxxhdpi

960dpi

6

3840 * 2160(4K分辨率)(4K电影其影片分辨率4096×2160,而电视、手机领域,由于屏幕16:9已成主流,因此4K指的是3840×2160的物理分辨率)

dp转换px

         实际像素 = dp * (dpi / 160 ),其中dpi可以是120、160、240、320,等。因此,当一个100dp的Button显示在一个315dpi的屏幕上时,其实际宽度是100 * ( 320 / 160 ) = 200px。为了证明,可以使用View对象的getWidth()方法获得其以像素数表示的宽度:

public void onClick(View view) {Toast.makeText(this, String.valueOf(view.getWidth()),Toast.LENGTH_LONG).show();}

代码实现:

public static float dp2px(Context context, float dp) {// +0.5f是为了四舍五入return (int)(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,context.getResources().getDisplayMetrics()) + 0.5f);  }


 

0 0
原创粉丝点击