4 回答
TA贡献1757条经验 获得超8个赞
一种方法是:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
它已弃用,您应该尝试使用以下代码。前两行代码为您提供了DisplayMetrics对象。该对象包含像heightPixels,等字段widthPixels。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
TA贡献1851条经验 获得超3个赞
它可能无法回答你的问题,但知道(当我提出这个问题时我自己正在寻找它)可能是有用的,如果你需要一个View的维度,但你的代码在布局尚未布局时正在执行(例如在onCreate()
)你可以设置一个ViewTreeObserver.OnGlobalLayoutListener
with View.getViewTreeObserver().addOnGlobalLayoutListener()
并放置需要视图维度的相关代码。布局布局后将调用侦听器的回调。
TA贡献1797条经验 获得超4个赞
如果你想支持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();}
当然,已弃用的方法最终会从最新的SDK中取出,但我们仍然依赖大多数拥有Android 2.1,2.2和2.3的用户,这就是我们留下的。
添加回答
举报