在布局文件中,设定view的大小一般使用dip,在代码中设定的大小都是像素px,dip是独立像素单位,它可以根据屏幕的大小自适应,所以设定合适的dip大小对整体布局是很有帮助的。
当我们拿到一个手机,不知道它的尺寸大小,如何设定布局dip呢?
首先,获取屏幕的密度
float scale = mContext.getResources().getDisplayMetrics().density;
再获取屏幕的宽和高,这里就是屏幕真正的像素
WindowManager wm = (WindowManager) this
.getSystemService(Context.WINDOW_SERVICE);
int height = wm.getDefaultDisplay().getHeight();
int width = wm.getDefaultDisplay().getWidth();
我们可以通过px和dip的转换函数,
public static int dip2px(Context context, float dipValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dipValue * scale + 0.5f);
}
public static int px2dip(Context context, float pxValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(pxValue / scale + 0.5f);
}
得到宽dip和高dip,这样我们在布局文件中就可以比较合适的定义组件的大小和位置