有兩種方式:
方式一:(可以使用继榆,但是已經(jīng)不推薦使用了)
WindowManager mWindowManager;
mWindowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
mWindowManager.getDefaultDisplay().getWidth();
mWindowManager.getDefaultDisplay().getHeight()
方式二:(目前android推薦使用的方式)
WindowManager mWindowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics metrics = new DisplayMetrics();
mWindowManager.getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;//獲取到的是px吭服,像素换淆,絕對(duì)像素,需要轉(zhuǎn)化為dpi
int height = metrics.heightPixels;
px與dpi的相互轉(zhuǎn)化
px描述:The absolute height of the display in pixels.
px(pixels)像素砚亭,是屏幕的絕對(duì)像素耘纱,屏幕有多少個(gè)像素就是多少像素.
dip(device independent pixel)設(shè)備獨(dú)立像素,與像素?zé)o關(guān) .
fun pxToDip(scale: Float, px: Int): Int {
return (px / scale + 0.5f) as Int
}
fun dipToPx(scale: Float, dpi: Int): Int {
return (dpi * scale + 0.5f) as Int
}
總結(jié):
densityDpi 每英寸多少個(gè)像素點(diǎn),
density = densityDpi /160
APP根據(jù)densityDpi的大小決定調(diào)用哪個(gè)文件夾下的圖片革娄,關(guān)系如下:
drawable-ldpi 底密度倾贰,通常是指120
drawable-mdpi 中等密度,通常是指160
drawable-xhdpi 超高密度拦惋,通常是指320
px = dip*density
分辨率的概念
現(xiàn)在人們經(jīng)常把320*240成為 分辨率匆浙,其實(shí)是不準(zhǔn)確的,這僅僅是圖片的像素點(diǎn)總數(shù)罷了厕妖,分辨率的概念是每英寸上的像素點(diǎn)數(shù)首尼,單位為dpi.
一般圖片的dpi為96DPI。這個(gè)單位與ps下的有出入言秸,但都是一回事软能。