Android 读取dimens , getDimension()、getDimensionPixelSize()、getDimenPixelOffset()

重新总结,对于dp和sp来说,这几个函数效果一样,返回值有点区别,不过对于px来说就不一样啦,评论里说的很对.
<dimen name="d_px10_5">10.5px</dimen>
<dimen name="d_dp10_5">10.5dp</dimen>
<dimen name="d_sp10_5">10.5sp</dimen>
        float px1= getResources().getDimension(R.dimen.d_px10_5);
        int px2= getResources().getDimensionPixelOffset(R.dimen.d_px10_5);
        int px3= getResources().getDimensionPixelSize(R.dimen.d_px10_5);
        L.d(TAG," d_px10_5 getDimension = "+px1);
        L.d(TAG," d_px10_5 getDimensionPixelOffset = "+px2);
        L.d(TAG," d_px10_5 getDimensionPixelSize = "+px3);
        float dp1= getResources().getDimension(R.dimen.d_dp10_5);
        int dp2= getResources().getDimensionPixelOffset(R.dimen.d_dp10_5);
        int dp3= getResources().getDimensionPixelSize(R.dimen.d_dp10_5);
        L.d(TAG," d_dp10_5 getDimension = "+dp1);
        L.d(TAG," d_dp10_5 getDimensionPixelOffset = "+dp2);
        L.d(TAG," d_dp10_5 getDimensionPixelSize = "+dp3);
        float sp1= getResources().getDimension(R.dimen.d_sp10_5);
        int sp2= getResources().getDimensionPixelOffset(R.dimen.d_sp10_5);
        int sp3= getResources().getDimensionPixelSize(R.dimen.d_sp10_5);
        L.d(TAG," d_sp10_5 getDimension = "+sp1);
        L.d(TAG," d_sp10_5 getDimensionPixelOffset = "+sp2);
        L.d(TAG," d_sp10_5 getDimensionPixelSize = "+sp3);
输出
E:  d_px10_5 getDimension = 10.5
E:  d_px10_5 getDimensionPixelOffset = 10
E:  d_px10_5 getDimensionPixelSize = 11

E:  d_dp10_5 getDimension = 42.0
E:  d_dp10_5 getDimensionPixelOffset = 42
E:  d_dp10_5 getDimensionPixelSize = 42

E:  d_sp10_5 getDimension = 42.0
E:  d_sp10_5 getDimensionPixelOffset = 42
E:  d_sp10_5 getDimensionPixelSize = 42

转换

/**
     * dp转换成px
     */
    public static int dp2px(Context context,float dpValue){
        float scale=context.getResources().getDisplayMetrics().density;
        return (int)(dpValue*scale+0.5f);
    }

    /**
     * px转换成dp
     */
    public static int px2dp(Context context,float pxValue){
        float scale=context.getResources().getDisplayMetrics().density;
        return (int)(pxValue/scale+0.5f);
    }
    /**
     * sp转换成px
     */
    public static int sp2px(Context context,float spValue){
        float fontScale=context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue*fontScale+0.5f);
    }
    /**
     * px转换成sp
     */
    public static int px2sp(Context context,float pxValue){
        float fontScale=context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue/fontScale+0.5f);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。