【问题标题】:Android: determining screen size in different ways cause different screen sizesAndroid:以不同方式确定屏幕尺寸会导致不同的屏幕尺寸
【发布时间】:2014-08-25 19:02:30
【问题描述】:

当我通过此尝试确定 Activity 中的屏幕尺寸时,我得到 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);
}

没有标题栏。这种差异是如何出现的?

【问题讨论】:

    标签: android screen-size measurement


    【解决方案1】:

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

    • 已附
    • 实测*
    • 布局
    • 绘制

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

    希望对你有帮助!

    问候!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 2015-02-28
      • 2015-11-18
      • 2015-11-18
      • 2019-06-17
      相关资源
      最近更新 更多