Android初级控件--像素

Android支持的像素单位有:px(像素)、in(英寸)、mm(毫米)、pt(磅,1/72英寸)、dp(与设备无关的显示单位)、

dip(dp)、sp(用于设置字体大小)。其中常用的有px、dp、sp三种。
px是手机屏幕可显示的最小单位,与物理设备的显示屏有关。一般来说,同样尺寸的手机像素密度越大,看起来越清晰,以px
计量的分辨率也越大。
dp与物理设备无关,只与屏幕的尺寸有关。同样尺寸的屏幕以dp来计量的话,分辨率是一样的。
dp与sp
sp一般专门用来表示字体的大小。手机在系统设置里,可以调整字体的大小。设置普通字体时,同数值dp和sp看起来一样大。
但设置为大字体,dp的字体大小没有变化,而sp的字体则变大了。
即dp与系统设置的字体大小没有关系,而sp会随着系统的字体设置变化而变化。
dp和px的转换取决于设备的像素密度,而像素密度就是DisplayMetrics中的density参数。
density=px/dp
具体的转换函数:

//根据手机的分辨率 从dp转为px
public static int dip2dx(Context context,float dpValue){
   //获取当前手机的像素密度
   final float scale=context.getResources().getDisplayMetrics().density;
   return (int)(dpValue *scale+0.5f);//四舍五入取整
}
//根据手机的分辨率 从px转为px
public static int px2dip(Context context,float pxValue){
  //获取当前手机的像素密度
  final float scale=context.getResources().getDisplayMetrics().density;
  return (int)(pxValue/scale+0.5f); //四舍五入取整
}

在xml布局中,字体用sp表示,而其余的表示长度大小的一般都用dp来表示。
但在实际的逻辑代码中,情况有所不同,其原因为LayoutParams里的weight和height,还是setMargins和setPadding,
参数单位都为px,所以在处理中,我们需要将dp转为px;
代码如下:

//将10dp转化为其对应的px
int px_dip10=Utils.dip2px(this,10L);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值