4 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
一種方法是:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
它已棄用,您應(yīng)該嘗試使用以下代碼。前兩行代碼為您提供了DisplayMetrics對(duì)象。該對(duì)象包含像heightPixels,等字段widthPixels。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
它可能無(wú)法回答你的問(wèn)題,但知道(當(dāng)我提出這個(gè)問(wèn)題時(shí)我自己正在尋找它)可能是有用的,如果你需要一個(gè)View的維度,但你的代碼在布局尚未布局時(shí)正在執(zhí)行(例如在onCreate()
)你可以設(shè)置一個(gè)ViewTreeObserver.OnGlobalLayoutListener
with View.getViewTreeObserver().addOnGlobalLayoutListener()
并放置需要視圖維度的相關(guān)代碼。布局布局后將調(diào)用偵聽(tīng)器的回調(diào)。

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果你想支持precomb,你需要在API 13之前提供向后兼容性。例如:
int measuredWidth = 0;int measuredHeight = 0;WindowManager w = getWindowManager();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { Point size = new Point(); w.getDefaultDisplay().getSize(size); measuredWidth = size.x; measuredHeight = size.y;} else { Display d = w.getDefaultDisplay(); measuredWidth = d.getWidth(); measuredHeight = d.getHeight();}
當(dāng)然,已棄用的方法最終會(huì)從最新的SDK中取出,但我們?nèi)匀灰蕾?lài)大多數(shù)擁有Android 2.1,2.2和2.3的用戶(hù),這就是我們留下的。
添加回答
舉報(bào)