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,像素,絕對像素,需要轉(zhuǎn)化為dpi
int height = metrics.heightPixels;

px與dpi的相互轉(zhuǎn)化
px描述:The absolute height of the display in pixels.
px(pixels)像素,是屏幕的絕對像素,屏幕有多少個(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)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容