Chinaunix首页 | 论坛 | 博客
  • 博客访问: 468287
  • 博文数量: 145
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1060
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-22 11:52
个人简介

专注计算机技术: Linux Android 云计算 虚拟化 网络

文章分类

全部博文(145)

文章存档

2016年(3)

2015年(21)

2014年(75)

2013年(46)

我的朋友

分类: Android平台

2014-05-22 11:31:45

初学者容易混淆的问题dp和px。
 - px (pixels)像素 –一个像素通常被视为图像的最小的完整采样,这个用的比较多,特别是web开发,页面基本都是使用像素作为单位的.
 - dip或dp (device independent pixels)设备独立像素 — 这个和设备硬件有关,一般我们为了支持手机上多种分辨率,如WVGA、HVGA和QVGA,都会使用dip作为长度的单位

在XML中,为了支持多种分辨率的手机,我们一般都使用DP,在代码中,但是某一些控件的属性没有直接支持dip,而是以px为单位。
例如: setPadding, setMargins,android.view.ViewGroup.LayoutParams.height,android.view.ViewGroup.LayoutParams.width上面这两个属性的单位为像素,但是为了兼容多种分辨率的手机,我们需要最好使用dip,时候我们可以调用以下的代码进行转换.
int heightPx= DisplayUtil.dip2px(this, 50); layoutParams.height = heightPx;

该功能是设置Tab的高度,单位是像素.以上的单位转换是为了支持多分辨率手机的.

点击(此处)折叠或打开

  1. public static int dip2px(Context context, float dpValue) {
  2.     final float scale = context.getResources().getDisplayMetrics().density;
  3.     return (int) (dpValue * scale + 0.5f);
  4. }
  5.  
  6. public static int px2dip(Context context, float pxValue) {
  7.     final float scale = context.getResources().getDisplayMetrics().density;
  8.     return (int) (pxValue / scale + 0.5f);
  9. }

 -- 以上文章来自网上总结及自身体验 --

阅读(4905) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~