测试getDimension, getDimensionPixelOffset, getDimensionPixelSize

<dimen name="dp">20dp</dimen>
<dimen name="sp">20sp</dimen>
<dimen name="px">20px</dimen>

 

private void getDimens(){
    float a1 = getResources().getDimension(R.dimen.dp);
    int a2 = getResources().getDimensionPixelOffset(R.dimen.dp);
    int a3 = getResources().getDimensionPixelSize(R.dimen.dp);

    float b1 = getResources().getDimension(R.dimen.sp);
    int b2 = getResources().getDimensionPixelOffset(R.dimen.sp);
    int b3 = getResources().getDimensionPixelSize(R.dimen.sp);

    float c1 = getResources().getDimension(R.dimen.px);
    int c2 = getResources().getDimensionPixelOffset(R.dimen.px);
    int c3 = getResources().getDimensionPixelSize(R.dimen.px);

    Log.e(TAG, "读取dp---getDimension = "+a1+"   getDimensionPixelOffset = "+a2+"    getDimensionPixelSize = "+a3 );
    Log.e(TAG, "读取sp---getDimension = "+b1+"   getDimensionPixelOffset = "+b2+"    getDimensionPixelSize = "+b3 );
    Log.e(TAG, "读取px---getDimension = "+c1+"   getDimensionPixelOffset = "+c2+"    getDimensionPixelSize = "+c3 );
}

/**
 * dp ---->  px
 */
private int dp2px(Context context,float dpValue){
    float scale=context.getResources().getDisplayMetrics().density;
    Log.e(TAG, "dp2Px: getDisplayMetrics = "+context.getResources().getDisplayMetrics() );
    Log.e(TAG, "dp2Px: "+ dpValue+" ---> "+(int)(scale*dpValue+0.5f));
    return (int)(scale*dpValue+0.5f);
}

/**
 * px ---->  dp
 */
private int px2dp(Context context,float pxValue){
    float scale=context.getResources().getDisplayMetrics().density;
    Log.e(TAG, "px2dp: "+ pxValue+" ---> "+(int)(pxValue/scale+0.5f));
    return (int)(pxValue/scale+0.5f);
}

/**
 * sp ---->  px
 */
private int sp2px(Context context,float spValue){
    float scale=context.getResources().getDisplayMetrics().scaledDensity;
    Log.e(TAG, "sp2px: "+ spValue+" ---> "+(int)(scale*spValue+0.5f));
    return (int)(scale*spValue+0.5f);
}

/**
 * px ---->  sp
 */
private int px2sp(Context context,float pxValue){
    float scale=context.getResources().getDisplayMetrics().scaledDensity;
    Log.e(TAG, "sp2px: "+ pxValue+" ---> "+(int)(pxValue/scale+0.5f));
    return (int)(pxValue/scale+0.5f);
}

结果:

读取dp---getDimension = 60.0   getDimensionPixelOffset = 60    getDimensionPixelSize = 60
读取sp---getDimension = 60.0   getDimensionPixelOffset = 60    getDimensionPixelSize = 60
读取px---getDimension = 20.0   getDimensionPixelOffset = 20    getDimensionPixelSize = 20
DisplayMetrics{density=3.0, width=1080, height=2267, scaledDensity=3.0, xdpi=403.411, ydpi=401.594}
dp2Px: 20.0 ---> 60
px2dp: 60.0 ---> 20
sp2px: 20.0 ---> 60
px2sp: 60.0 ---> 20

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值