這是一個非常簡單的問題,我找不到答案:/ 如何以整數值快速訪問屏幕分辨率(寬度,高度)?Android:獲取屏幕分辨率/像素爲整數值
我已經試過這一個,但它總是顯示在我的模擬器零:
DisplayMetrics dm = new DisplayMetrics();
int width = dm.widthPixels/2;
在我來說,我想動態創建一個tableRows表,每塊包含兩個的cols。這個列全部應該填充寬度的一半。
有人可以給我一個提示嗎?
這是一個非常簡單的問題,我找不到答案:/ 如何以整數值快速訪問屏幕分辨率(寬度,高度)?Android:獲取屏幕分辨率/像素爲整數值
我已經試過這一個,但它總是顯示在我的模擬器零:
DisplayMetrics dm = new DisplayMetrics();
int width = dm.widthPixels/2;
在我來說,我想動態創建一個tableRows表,每塊包含兩個的cols。這個列全部應該填充寬度的一半。
有人可以給我一個提示嗎?
最簡單的方法是實施onSizeChanged。您可能獲得的值爲0,因爲該視圖尚未初始化。例如,您不能在視圖構造函數中調用上述代碼。
那麼這是什麼對我來說,當我動態地添加TableRows並完成後,將表添加到主LinearLayout並將其設置爲ContentView(通過使用this.setContentView(ll),其中ll是我的linearLayout? – poeschlorn 2010-05-25 09:13:11
onSizeChanged將被稱爲第一個當你的視圖被繪製並且每當方向改變的時候,當它被調用時,將屏幕的尺寸存儲在你的類的成員中,當你繪製時(在OnDraw方法中)使用這些值。 – kgiannakakis 2010-05-25 09:18:55
謝謝,我要去試試這:) :) – poeschlorn 2010-05-25 11:59:48
你可以用這種方式屏幕規格:
Display d = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = d.getWidth();
int height = d.getHeight();
這應該被標記爲正確的答案 – emaillenin 2011-10-16 17:14:49
我得到了@deprecated警告,沒有進一步的解釋。使用Guillaume Perrot的答案代替 – Moak 2012-08-08 01:34:34
@Moak,自從Android API 13以來已被棄用。請參閱[docs](http://developer.android。COM /參考/機器人/視圖/ Display.html#的getWidth%28%29)。 – 2015-10-28 10:12:09
我使用以下命令:
int scrWidth = getWindowManager().getDefaultDisplay().getWidth();
int scrHeight = getWindowManager().getDefaultDisplay().getHeight();
沒有搞亂,沒什麼大驚小怪的,只有2類變量
的trashkalmar答案正確。
但是,結果將特定於活動上下文。如果你想整個設備的屏幕分辨率:
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); // the results will be higher than using the activity context object or the getWindowManager() shortcut
wm.getDefaultDisplay().getMetrics(displayMetrics);
int screenWidth = displayMetrics.widthPixels;
int screenHeight = displayMetrics.heightPixels;
請注意,結果也取決於當前設備的方向。
完美!...... – 2014-05-21 07:39:19
1.簡單地使用這裏面的活動來獲取屏幕寬度和高度像素。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay()
.getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
2,本也可以使用,但需要API級別的內聯檢查
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
display.getSize(size);
int width2 = size.x;
int height2 = size.y;
} else {
int width2 = display.getWidth();
int height2 = display.getHeight();
}
3.使用這個時候你是不是在活動,但有背景
WindowManager wm = (WindowManager) context.getSystemService(
Context.WINDOW_SERVICE);
Display display1 = wm.getDefaultDisplay();
Point size1 = new Point();
int width1;
int height1;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
display1.getSize(size1);
width1 = size1.x;
height1 = size1.y;
} else {
width2 = display.getWidth();
height2 = display.getHeight();
}
只是一個猜測 - DisplayMetrics中檢索的值在第一次繪製之前可能無效。你在onCreate或onDraw上檢查這個或者什麼時候? – SteelBytes 2010-05-25 07:13:11
結果爲零的真正原因是因爲zero是int中的默認值。 'dm.widthPixels'沒有被初始化,所以它的值是零,零除以2也是零......你應該嘗試類似於'mView.getContext()。getResources()。getDisplayMetrics()' – Armin 2016-08-05 17:16:33