getDimension()\getDimensionPixel

2017-08-11  本文已影响0人  与猎犬赛跑的野兔

在写自定义View的时候想获取dimen值的时候,有下面三个函数:

看看API reference里的解释:

测试代码:

<resources>  
    <dimen name="dp_01">16dp</dimen>  
    <dimen name="px_01">16px</dimen>  
    <dimen name="sp_01">16sp</dimen>  
 </resources> 
作者:亦枫
链接:http://www.jianshu.com/p/9cdfc2f26a52
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
float a1=getResources().getDimension(R.dimen.dp_01);    
int a2=getResources().getDimensionPixelOffset(R.dimen.dp_01);    
int a3=getResources().getDimensionPixelSize(R.dimen.dp_01);    

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

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

Log.d("test", "getDimension= "+a1+", getDimensionPixelOffset="+a2+",getDimensionPixelSize="+a3);    
Log.d("test", "getDimension= "+b1+", getDimensionPixelOffset="+b2+",getDimensionPixelSize="+b3);    
Log.d("test", "getDimension= "+c1+", getDimensionPixelOffset="+c2+",getDimensionPixelSize="+c3);

作者:亦枫
链接:http://www.jianshu.com/p/9cdfc2f26a52
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

测试结果:

//Device (480*800,240dpi,density=1.5):   
getDimension= 24.0, getDimensionPixelOffset=24,getDimensionPixelSize=24    
getDimension= 16.0, getDimensionPixelOffset=16,getDimensionPixelSize=24    
getDimension= 24.0, getDimensionPixelOffset=24,getDimensionPixelSize=24

作者:亦枫
链接:http://www.jianshu.com/p/9cdfc2f26a52
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

补充:
当利用上述的getDimension() 获取到数据后,如果用TextView/EditText.setTextSize()时需注意:

/** 
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素) 
     */  
    public static int dip2px(Context context, float dpValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (dpValue * scale + 0.5f);  
    } 
/** 
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp 
     */  
    public static int px2dip(Context context, float pxValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (pxValue / scale + 0.5f);  
    }  
上一篇下一篇

猜你喜欢

热点阅读