Android中dip(dp)与px之间单位转换
来源:互联网 发布:魔兽世界7.0 cpu优化 编辑:程序博客网 时间:2024/05/16 06:18
转自:http://blog.csdn.net/run283825932/article/details/8674160
px :是屏幕的像素点
in :英寸
mm :毫米
pt :磅,1/72 英寸
dp :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px
dip :等同于dp
sp :同dp相似,但还会根据用户的字体大小偏好来缩放。
建议使用sp作为文本的单位,其它用dip
针对dip和px 的关系,做以下概述:
QVGA屏density=120; QVGA(240*320)
HVGA屏density=160; HVGA(320*480)
WVGA屏density=240; WVGA(480*800)
density = 320; 720*1280
WQVGA屏density=120 WQVGA(240*400)
density值表示每英寸有多少个显示点,与分辨率是两个概念。
不同density下屏幕分辨率信息,以480dip*800dip的 WVGA(density=240)为例
density=120时
屏幕实际分辨率为240px*400px (两个点对应一个分辨率)
状态栏和标题栏高各19px或者25dip
横屏是屏幕宽度400px 或者800dip,工作区域高度211px或者480dip
竖屏时屏幕宽度240px或者480dip,工作区域高度381px或者775dip
density=160时
屏幕实际分辨率为320px*533px (3个点对应两个分辨率)
状态栏和标题栏高个25px或者25dip
横屏是屏幕宽度533px 或者800dip,工作区域高度295px或者480dip
竖屏时屏幕宽度320px或者480dip,工作区域高度508px或者775dip
density=240时
屏幕实际分辨率为480px*800px (一个点对于一个分辨率)
状态栏和标题栏高个38px或者25dip
横屏是屏幕宽度800px 或者800dip,工作区域高度442px或者480dip
竖屏时屏幕宽度480px或者480dip,工作区域高度762px或者775dip
apk的资源包中
当屏幕density=240时,使用hdpi 标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。
不加任何标签的资源是各种分辨率情况下共用的。
布局时尽量使用单位dip,少使用px
dp与px换算公式:
pixs =dips * (densityDpi/160).
dips=(pixs*160)/densityDpi
DisplayMetrics dm = new DisplayMetrics();
dm = getResources().getDisplayMetrics();
float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
int densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)
但是,现在在开始android应用和游戏后,基本上都转换成用dp作用为单位了,因为可以支持多种分辨率的手机.
以下是这两个单位的概念:
px (pixels)像素 –一个像素通常被视为图像的最小的完整采样,这个用的比较多,特别是web开发,页面基本都是使用像素作为单位的.
dip或dp (device independent pixels)设备独立像素 — 这个和设备硬件有关,一般我们为了支持手机上多种分辨率,如WVGA、HVGA和QVGA,都会使用dip作为长度的单位
在Android开发我们一般都可以不需要使用px的,但是某一些控件的属性没有直接支持dip,像下面的代码
android.view.ViewGroup.LayoutParams.height
android.view.ViewGroup.LayoutParams.width
上面这两个属性的单位为像素,但是为了兼容多种分辨率的手机,我们需要最好使用dip,时候我们可以调用以下的代码进行转换.
int heightPx= DisplayUtil.dip2px(this, 33);
mTabHost.getTabWidget().getChildAt(i).getLayoutParams().height = heightPx;
以上代码可以在我另一篇文章看得到.该功能是设置Tab的高度,单位是像素.以上的单位转换是为了支持多分辨率手机的.
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
- Android中dip(dp)与px之间单位转换
- Android中dip(dp)与px之间单位转换
- Android中dip(dp)与px之间单位转换
- Android中dip(dp)与px之间单位转换
- Android中dip(dp)与px之间单位转换
- Android中dip(dp)与px之间单位转换
- Android中dip(dp)与px之间单位转换
- Android中dip(dp)与px之间单位转换
- Android中dip(dp)与px之间单位转换
- Android中dip(dp)、px、sp之间单位转换
- Android中dip与px之间单位转换
- Android 程序中像素(px)跟 单位dp(dip)之间的转换
- Android程序中像素(px)跟单位dp(dip)之间的转换
- Android中dip(dp)与px之间单位转换 dip2px dp转px 无context算法(以及获取获取屏幕宽度和高度)
- dip与px单位之间转换
- dip与px单位之间转换
- dip与px单位之间转换
- Android中 dp 与 px 单位转换
- UniCode字符串的拷贝
- RTTI-运行阶段类型识别及类型转换
- 主键 外键
- 使用JSONObject(json-lib)格式化bean,map,list!!!
- 代码保存、配色、发布-整体方案----一段代码的发布
- Android中dip(dp)与px之间单位转换
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- iterator和for语句解析list的性能对比
- mysql 求两个日期相距的大小
- UIImage 图片处理:截图,缩放,设定大小,存储
- 后台登录(包含验证码)的php代码实现
- IOS学习 IOS8的虚化效果
- Netstat 网络查看命令
- JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)