一:Android 布局单位 dip dp sp px 总结
在android的xml布局当中,经常会看到dip、dp、px、sp等单位,知道它们的作用才可以更加精确的布局UI。
dip:英文device independent pixels(设备独立像素)。所有的设备都有一个统一的dip大小(480*320),就是说,android的dip就是把屏幕的高分成了480个dip,宽分成了320个dip,每个dip在高中表示屏幕的1/480,在宽中表示屏幕的1/320。这样做的好处显而易见,我们可以使应用UI在不同大小的屏幕上都能正常的显示。
dp:完全等同于dip。
px:pixels,就是绝对像素。大小固定,不会随着屏幕不同而改变。
sp:scaled pixels,放大像素,主要用于字体显示,也是为了字体显示可以适应不同大小尺寸的屏幕。
二:
http://www.tuyiyi.com/ued/app/22438.html Android适配UI文章
三:Android 屏幕常用介绍
传统意义上,一般是是这么认为的:
ldpi: 对应分辨率240×320
mdpi: 对应分辨率320×480
hdpi:对应分辨率480×800或480×854
我们经常说的分辨率和ppi的关系,其实他们是没多大关系。分辨率只是说明屏幕上有多少个像素点,这也跟屏幕大小有关系。当然对于屏幕大小相同的来讲 分辨率越高 ppi越大,如果脱离了屏幕的物理尺寸谈分辨率是没有任何意义的。就像平板的分辨率比手机的大,那是因为平板个大呀。从颜色显示的细腻程度上讲并不见得比手机强。
但实际上没有这么简单,直接看官方资料的下标,可以看到其实ldpi一样由480×800,甚至还有1024×600
| 低密度(ldpi 120) | 中密度(mdpi 160) | 高密度(hdpi 240) | 超高密度(320 xhdpi) |
小屏幕 | QVGA (240×320) | | 480×640 | |
中屏幕 | WQVGA400 (240×400) WQVGA432 (240×432) | HVGA (320×480) | WVGA800 (480×800) WVGA854 (480×854) 600×1024 | 640×960 |
大屏幕 | WVGA800** (480×800) WVGA854** (480×854) | WVGA800* (480×800) WVGA854* (480×854) 600×1024 | | |
超大屏幕 | 1024×600 | WXGA (1280×800) 1024×768 1280×768 | 1536×1152 1920×1152 1920×1200 | 2048×1536 |
dp这个单位可能对web开发的人比较陌生,因为一般都是使用px(像素)
但是,现在在开始android应用和游戏后,基本上都转换成用dp作用为单位了,因为可以支持多种分辨率的手机.
以下是这两个单位的概念:
px (pixels)像素 –一个像素通常被视为图像的最小的完整采样,这个用的比较多,特别是web开发,页面基本都是使用像素作为单位的.
dip或dp (device independent pixels)设备独立像素 — 这个和设备硬件有关,一般我们为了支持手机上多种分辨率,如WVGA、HVGA和QVGA,都会使用dip作为长度的单位
在 Android开发我们一般都可以不需要使用px的,但是某一些控件的属性没有直接支持dip,像下面的代码
1. android.view.ViewGroup.LayoutParams.height
2. android.view.ViewGroup.LayoutParams.width
复制代码
上面这两个属性的单位为像素,但是为了兼容多种
分辨率
的手机,我们需要最好使用dip,时候我们可以调用以下的代码进行转换.
1. int heightPx= DisplayUtil.dip2px(this, 33);
2. mTabHost.getTabWidget().getChildAt(i).getLayoutParams().height = heightPx;
复制代码
以上代码可以在我另一篇文章看得到.该功能是设置Tab的高度,单位是像素.以上的
单位转换
是为了支持多分辨率手机的.
该文章的地址 :
[
1. /**
2. * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
3. */
4. public static int dip2px(Context context, float dpValue) {
5. final float scale = context.getResources().getDisplayMetrics().density;
6. return (int) (dpValue * scale + 0.5f);
7. }
8.
9. /**
10. * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
11. */
12. public static int px2dip(Context context, float pxValue) {
13. final float scale = context.getResources().getDisplayMetrics().density;
14. return (int) (pxValue / scale + 0.5f);
15. }
复制代码
Android中将像素转换为sp/dp
发表于 2012 年 03 月 13 日 由 微風
代码与范例:
12345678 |
|
说明:将像素值与Android的尺寸单位dp转换。dp/sp的意义基本相同,都是与屏幕密度无关的尺寸单位,只不过前者用于字体尺寸以外的场合,而后者用于指定字体尺寸。在不同情况下,dp和sp所表示的尺寸会有些不同,这部分内容将在之后补充。