安卓獲取螢幕長寬各種引數的總結

2021-07-11 04:10:37 字數 2303 閱讀 5342

android中獲取螢幕的長度和寬度,參考了網上有很多**,但結果與實際不符,如我的手機是i9000,螢幕大小是480*800px,得 到的結果卻為320*533

結果很不靠譜,於是自己寫了幾行**,親測一下

測試引數:

測試環境: i9000( 三星)

物理螢幕:480*800px

density :1.5

測試**:

// 獲取螢幕密度(方法1)       

int screenwidth = getwindowmanager().getdefaultdisplay().getwidth(); // 螢幕寬(畫素,如:480px)

int screenheight = getwindowmanager().getdefaultdisplay().getheight(); // 螢幕高(畫素,如:800p)

log.e(tag + " getdefaultdisplay", "screenwidth=" + screenwidth + "; screenheight=" + screenheight);

// 獲取螢幕密度(方法2)

displaymetrics dm = new displaymetrics();

dm = getresources().getdisplaymetrics();

float density = dm.density; // 螢幕密度(畫素比例:0.75/1.0/1.5/2.0)

int densitydpi = dm.densitydpi; // 螢幕密度(每寸畫素:120/160/240/320)

float xdpi = dm.xdpi;

float ydpi = dm.ydpi;

log.e(tag + " displaymetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);

log.e(tag + " displaymetrics", "density=" + density + "; densitydpi=" + densitydpi);

screenwidth = dm.widthpixels; // 螢幕寬(畫素,如:480px)

screenheight = dm.heightpixels; // 螢幕高(畫素,如:800px)

log.e(tag + " displaymetrics(111)", "screenwidth=" + screenwidth + "; screenheight=" + screenheight);

// 獲取螢幕密度(方法3)

dm = new displaymetrics();

getwindowmanager().getdefaultdisplay().getmetrics(dm);

density = dm.density; // 螢幕密度(畫素比例:0.75/1.0/1.5/2.0)

densitydpi = dm.densitydpi; // 螢幕密度(每寸畫素:120/160/240/320)

xdpi = dm.xdpi;

ydpi = dm.ydpi;

log.e(tag + " displaymetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);

log.e(tag + " displaymetrics", "density=" + density + "; densitydpi=" + densitydpi);

int screenwidthdip = dm.widthpixels; // 螢幕寬(dip,如:320dip)

int screenheightdip = dm.heightpixels; // 螢幕寬(dip,如:533dip)

log.e(tag + " displaymetrics(222)", "screenwidthdip=" + screenwidthdip + "; screenheightdip=" + screenheightdip);

screenwidth = (int)(dm.widthpixels * density + 0.5f); // 螢幕寬(px,如:480px)

screenheight = (int)(dm.heightpixels * density + 0.5f); // 螢幕高(px,如:800px)

log.e(tag + " displaymetrics(222)", "screenwidth=" + screenwidth + "; screenheight=" + screenheight);

安卓獲取螢幕最大(絕對)解析度

安卓開發時,在很多應用場景需要獲取手機螢幕的真實解析度,然而查閱了大部分部落格提供的獲取方法發現獲取方法並不對。下面幾種常用的方法 錯誤 和最終正確獲取的方法均會展示在下面。實驗場景 activity 隱藏或不隱藏狀態列 虛擬導航欄等場景 service 中。錯誤方法一 displaymetrics...

關於安卓開發過程中螢幕的各種使用

獲取螢幕寬高的兩種方法 1 windowmanager wm this.getwindowmanager intwidth wm.getdefaultdisplay getwidth intheight wm.getdefaultdisplay getheight 2 windowmanager w...

獲取安卓應用的版本

獲取安卓應用的版本 在清單檔案androidmanifest.xml中設定程式的版本 android versionname 1.0.1 有時候我們須要在 中獲取到這個版本。1.獲取當前應用的版本號名 public string versionname try catch exception e r...