获取屏幕宽和高
DisplayMetrics dm =getResources().getDisplayMetrics();
int w_screen = dm.widthPixels; //宽度 单位为px
int h_screen = dm.heightPixels; //高度
//dm.densityDpi 密度
densityDpi 每英寸多少个像素点,
density = densityDpi /160
APP根据densityDpi的大小决定调用哪个文件夹下的图片,关系如下:
drawable-ldpi 底密度,通常是指120
drawable-mdpi 中等密度,通常是指160
drawable-xhdpi 超高密度,通常是指320
注意,以下方法已经outtime
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay(); //display.getWidth()为宽度
单位转换
dip2px:
/**
* 将dip转换为px
*
* 转换原因: px (pixels)像素
* –一个像素通常被视为图像的最小的完整采样,这个用的比较多,特别是web开发,页面基本都是使用像素作为单位的. dip或dp (device
* independent pixels)设备独立像素 —
* 这个和设备硬件有关,一般我们为了支持手机上多种分辨率,如WVGA、HVGA和QVGA,都会使用dip作为长度的单位
* 在Android开发我们一般都可以不需要使用px的,但是某一些控件的属性没有直接支持dip。所以需要转换
*
* @param context
* @param value
* @return
*/
public static int dip2px(Context context, int value) {
/*
* 这是获取手机屏幕参数,后面的density就是屏幕的密度,类似分辨率
* 详情查看:http://blog.youkuaiyun.com/feng88724/article/details/6599821
*/
float scaleing = context.getResources().getDisplayMetrics().density;
return (int) (value * scaleing + 0.5f);
}
px2dip:
public static int px2dip(Context context, int value) {
float scaling = context.getResources().getDisplayMetrics().density;
return (int) (value / scaling + 0.5f);
}