屏幕适配中的dip与px之间的转化

在项目中,为了适配所有的屏幕,有时候会使用到dip和px之间的转换

dip 称为设备独立像素,在不同的移动设备上,有着不同的显示效果,与设备的显示器的单位像素点有关。

px则是真是的物理像素,1px就是一个真实像素点。

举例说明一下独立像素与真实像素的区别

比如,在横向480px的设备上绘制宽度为240px的区域,这时,正好绘制的宽度是总宽度的一半,但是当在屏幕宽度为960px的设备上运行时,就会只占到宽度的1/4,这样的话,就不能达到屏幕适配的目的了。如果使用的是dip,或是dp,sp,如果设置为宽度为240dp(建议sp用来设置字体大小),那么就是把屏幕宽度分为了480份,它占240份,无论是在宽度为960px还是480px的屏幕上,都会占到宽度的一半。这就是无关像素点的好处。

下面所以下两种转换方式

/**
 * dip转换像素px
 */
public static int dip2px(Context context, float dpValue) {
    try {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return (int) dpValue;
}

/**
 * 像素pxdip
 *
 * @param context
 * @param pxValue
 * @return
 */
public static int px2dip(Context context, float pxValue) {
    try {
        /**获得屏幕分辨率**/
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return (int) pxValue;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值