Android 獲取屏幕尺寸

有兩種方式:
方式一:(可以使用,但是已經(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下的有出入,但都是一回事。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容