New UI-常用计量单位px,dp,sp,pt解析与转换
New UI-常用计量单位px,dp,sp,pt解析与转换
——转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途!
小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的
力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文
更加的详尽,帮到更多的人,O(∩_∩)O谢谢!
小猪Android开发交流群:小猪Android开发交流群群号:421858269
新Android UI实例大全目录:http://blog.csdn.net/coder_pig/article/details/42145907
本节正文:
对于计量单位,我们习惯性地分为:相对单位与绝对单位,从字眼意义我们就可以
猜到,相对是可以根据不同的情景表现出不同的大小,常用的就有:dp,px,sp;
而绝对单位就是我们制定了一个标准,比如mm(毫米),写死了,1mm就那么多,
什么情况下都是那么多,而常用的还有,in(英寸,2.54cm),pt(磅)印刷业常用
单位,1 pt = 1/72 in!于是乎,我们今天要讨论研究的就是相对单位:px,dp,sp;
相信大家对他们也不陌生吧,比如写死一个ImageView的宽高;margin多少个dp
设置偏移;画一条宽1px的view来形成一条直线等等..那么本节就来
1.研究px,dp,sp的概念
2.单位相互转化,写一个简单的工具类
3.布局的时候为什么尽量用dp,而不适用px?
好了,开始本节的内容吧!
1)px,dp,sp的概念:
2)单位相互转化,写一个简单的工具类
- /**
- * 该工具类用于:px,dp,sp的相互转化
- * @author coder-pig
- * */
- public class DisplayUtil {
- //1.px转dp
- public static int px2dip(Context context, float pxValue) {
- final float scale = context.getResources().getDisplayMetrics().density;
- return (int) (pxValue / scale + 0.5f);
- }
- //2.dp转px
- public static int dip2px(Context context, float dipValue) {
- final float scale = context.getResources().getDisplayMetrics().density;
- return (int) (dipValue * scale + 0.5f);
- }
- //3.px转sp
- public static int px2sp(Context context, float pxValue) {
- final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
- return (int) (pxValue / fontScale + 0.5f);
- }
- //4.sp转px
- public static int sp2px(Context context, float spValue) {
- final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
- return (int) (spValue * fontScale + 0.5f);
- }
- }
/**
* 该工具类用于:px,dp,sp的相互转化
* @author coder-pig
* */
public class DisplayUtil {
//1.px转dp
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
//2.dp转px
public static int dip2px(Context context, float dipValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dipValue * scale + 0.5f);
}
//3.px转sp
public static int px2sp(Context context, float pxValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (pxValue / fontScale + 0.5f);
}
//4.sp转px
public static int sp2px(Context context, float spValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
}
3.布局的时候为什么尽量用dp,而不适用px?
答:在上一节我们已经知道了屏幕密度dpi这个概念了,虽然相同尺寸的手机,但是他们的
dpi可能会不同,dpi是单位长度里面的像素点的数目,那么,dpi较小的手机,像素点的就会
比dpi大的手机的像素点大,那么如果我们使用px的话,dpi大的手机可能显示是正常的,
但是dpi较小的手机可能会出现错位,界面与预期效果相差甚远,还可能超出边界!px可以
理解为物理像素,而dp则是虚拟像素,使用dp可以解决上述这些问题,所以我们还是习惯
布局的时候使用dp的!!!
New UI-常用计量单位px,dp,sp,pt解析与转换相关推荐
- Android 常用计量单位(px,dp,sp,pt,in)
1.px:屏幕上的点 pixel,表示像素或分辨率.不同设备显示效果相同,一般我们的 HVGA 代表 320x480 像素,这个用的比较多. 2.dp:设备独立像素 device independen ...
- android 字体像素转换工具类_android px,dp,sp大小转换工具
package com.voole.playerlib.util; import android.content.Context; /** * Android大小单位转换工具类 * * float s ...
- Android的计量单位px,in,mm,pt,dp,dip,sp
px :是屏幕的像素点 in :英寸 mm :毫米 pt :磅,1/72 英寸 dp :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px dip :等 ...
- android 字体px转sp,Android中px,dp,sp区别及换算
px,dp,sp是Android中常用的距离单位. 基本概念: 屏幕尺寸:指的是屏幕对角线长度,用英寸(in)作为单位,1 in = 2.54 cm. 屏幕分辨率:在横纵向上的像素点数,单位px.一般 ...
- android 密度像素,Android屏幕密度适配问题之px,dp,sp等详细介绍
一 ,android屏幕相关知识 屏幕大小:指屏幕对角线的长度,使用"寸"度量,如4.7寸手机 分 辨 率:分辨率指手机屏幕的像素点个数,如720*1280 指屏幕宽有720个 ...
- android px,dp,sp大小转换工具
package com.voole.playerlib.util;import android.content.Context;/*** Android大小单位转换工具类<br/>* * ...
- Android常用计量单位详解(px,in,mm,pt,dp,dip,sp)
Android常用计量单位详解(px,in,mm,pt,dp,dip,sp) 在传统PC软件开发中经常以像素为单位设计计算机用户界面.例如,定义一个宽度为300像素的表单字段,列之间的间距为5个像素, ...
- [css] ui设计中px、pt、ppi、dpi、dp、sp之间的关系?
[css] ui设计中px.pt.ppi.dpi.dp.sp之间的关系? QQ20150717160352 做了几个移动端的项目之后,深感移动端尺寸换算的必要性,在此做个总结. 先介绍下各自的定义: ...
- px,in,mm,pt,dp,dip,sp 之间的换算公式以及区别 屏幕密度
px :是屏幕的像素点 in :英寸 mm :毫米 pt :磅,1/72 英寸 dp :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px dip :等 ...
最新文章
- 计算机电缆线对成缆系数,计算机电缆绞合系数 - 无图版
- 两帧点云刚性配准的ICP算法
- wampserver使用过程中遇到的问题及相关配置
- leetcode算法题--两句话中的不常见单词
- UVALive - 7163
- pydev-python 链接mysql数据库(mac系统)
- 重叠IO模型-异步IO
- 21天学通HTML5和CSS3第二版,21天学通HTML5+CSS3
- 锁 mysql_Mysql的锁(S锁和X锁的区别)
- jstack命令使用
- java 教室借用管理系统_[内附完整源码和文档] 基于JAVA语言的学生选课信息管理系统...
- 杭电2122Ice_cream’s world III
- Cross-Modal Retrieval——为什么要使用GAN呢?
- mysql管理索引_Mysql管理表和索引
- Golang中unsafe.Sizeof()的问题
- Android studio 的那些坑
- ECHAR学习-Part1 文字特效
- 如何使用FreeSSL申请免费证书?
- 面试考点:逻辑思维面试题(软件测试)
- DropBox系列-安卓DropBox介绍