<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