Android:以不同方式确定屏幕大小会导致不同的屏幕尺寸

时间:2014-08-25 19:02:30

标签: android screen-size measurement

当我通过此次尝试确定活动中的屏幕尺寸时,我得到 800x480

@SuppressWarnings("deprecation")
private void initSpecs()
{
    WindowManager windowManager = (WindowManager)this.getSystemService(Context.WINDOW_SERVICE);
    Point size = new Point();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
    {
        windowManager.getDefaultDisplay().getSize(size);

        effectiveWidth = size.x;
        effectiveHeight = size.y;
    }
    else
    {
        Display display = windowManager.getDefaultDisplay();

        effectiveWidth = display.getWidth();
        effectiveHeight = display.getHeight();
    }
}

当我通过以下尝试确定游戏视图(类扩展视图)中的屏幕尺寸时,我得到 800x442

@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    int width = MeasureSpec.getSize(widthMeasureSpec);
    int height = MeasureSpec.getSize(heightMeasureSpec);
}

没有标题栏。这种差异是如何产生的?

1 个答案:

答案 0 :(得分:1)

问题是,在第一种方式中,您实际上获得了“屏幕/显示”大小,但是,第二种方式,您获得的是视图的宽度/高度测量值,您覆盖了“onMeasure” “,这并不一定等于屏幕大小,特别是如果另一个视图在其生命周期中影响视图的大小。这是一种观点的生命周期。

  • 测量*
  • 布局

请注意,如果另一个View更改了它的大小,并且操作系统认为刷新视图是个好主意,那么这个生命周期有可能重复。

希望它有帮助!

问候!