得到乙個螢幕尺寸的三種方法如下:
// 通過windowmanager獲取
displaymetrics dm = new displaymetrics();
getwindowmanager().getdefaultdisplay().getmetrics(dm);
// 通過resources獲取
displaymetrics dm2 = getresources().getdisplaymetrics();
// 獲取螢幕的預設解析度
display display = getwindowmanager().getdefaultdisplay();
system.out.println("width-display :" + display.getwidth());
system.out.println("heigth-display :" + display.getheight());
在安卓4.2系統中,使用方法一得到了正確的螢幕尺寸值,而使用方法二和三得到的值全部為零。原因不祥。其中方法三中的display.getwidth()和display.getheight()已被棄用。
displaymetrics dm = new displaymetrics();
getwindowmanager().getdefaultdisplay().getmetrics(dm);//display = getwindowmanager().getdefaultdisplay();display.getmetrics(dm)(把螢幕尺寸資訊賦值給displaymetrics dm);
width = dm.widthpixels;
height = dm.heightpixels;
xdpi = dm.xdpi;
ydpi = dm.ydpi;
density = dm.densitydpi;
fdensity = dm.density;
查詢log,得到各值如下:
d/lichking(22643): -----------widthpixels---540
d/lichking(22643): -----------heightpixels---960
d/lichking(22643): -----------xdpi---244.92857
d/lichking(22643): -----------ydpi---246.30302
d/lichking(22643): -----------density---240
d/lichking(22643): -----------fdensity---1.5
另提一點,我們通常所指的螢幕上的int尺寸是畫素單位,比如我用gethitrect()得到控制項的矩形座標的值即使和畫素尺寸相匹配的。
displaymetrics和display的關係。
display指代顯示區域這個物件,它可能是真實的物理螢幕,也可能僅指應用程式的顯示區域,比如在非全屏activity裡,系統因為有狀態列,因此顯示區域要比物理螢幕要小。displaymetrics裡封裝了顯示區域的各種屬性值。檢視原始碼發現,在displaymetrics對各個屬性值的注釋都說明為真實的物理尺寸。而且也發現display.getmetrics(dm)這一函式基本在應用在獲取真實螢幕尺寸的時候。記住這一點即好。
另外xdpi不是指螢幕寬度上以dp為單位的大小。以dp為單位的螢幕寬度需用計算公式:dpwidth = widthpixels / fdensity = 540 / 1.5 = 360
android 螢幕解析度問題
在研究android的icon設計之前,有必要先了解android的介面是如何適配多樣化螢幕的。適配性程式將進行縮放,但是效果較差。為這兩個精度螢幕的手機各提供乙個。但是螢幕的引數多樣化,為每乙個精度的螢幕都設計一套icon,工作量大並且不能滿足程式的相容 性要求,勢必要對螢幕的分級,如在160dp...
android 螢幕解析度問題
iphone的icon設計就這麼簡單,iphone的螢幕只有320 480畫素,所以程式沒有適配性問題。android 在研究 android的icon設計之前,有必要先了解android的介面是如何適配多樣化螢幕的。適配性程式將進行縮放,但是效果較差。為這兩個精度螢幕的手機各提供乙個。但是螢幕的引...
獲取手機螢幕解析度
獲取手機螢幕解析度的類 displaymetrics dm new displaymetrics getwindowmanager getdefaultdisplay getmetrics dm 獲得手機的寬頻和高度畫素單位為px string str 手機螢幕解析度為 dm.widthpixels...