代码之家  ›  专栏  ›  技术社区  ›  beginner

父布局getWidth是否始终等于屏幕宽度

  •  0
  • beginner  · 技术社区  · 5 年前

    我正在使用这个代码 onCreate 创建位图的活动方法

    final DisplayMetrics displayMetrics =  context.getResources().getDisplayMetrics();
    int screenWidth = displayMetrics.widthPixels;
    String filePath = "image.png";
    final Bitmap fullImage = getBitmapFromAsset(context.getApplicationContext(), filePath);
    Matrix matrix = new Matrix();
    RectF src = new RectF(0, 0, fullImage.getWidth(), fullImage.getHeight());
    RectF dst = new RectF(0, 0, screenWidth/8f, screenWidth/8f);
    matrix.setRectToRect(src, dst, ScaleToFit.CENTER);
    mImage = Bitmap.createBitmap(fullImage, 0, 0, fullImage.getWidth(), fullImage.getHeight(), matrix, true);
    

    位图的宽度应为父布局的1/8(这是一个宽度匹配的线性布局,它是第一个/根布局)。我会一直使用肖像模式( android:screenOrientation="portrait"

    我知道我可以等待布局膨胀,然后使用 getWidth() getHeight()

    0 回复  |  直到 5 年前
        1
  •  1
  •   Reaz Murshed vir us    5 年前

    这很好。但是,我会在布局膨胀后在后台线程中这样做。这是我的两分钱。

    1. 如果位图创建花费太多时间,我们不应该在 onCreate developer's doc 在此了解如何保持应用程序的响应性。
    2. 另外,我会注意您试图加载到内存中的图像大小。如果映像太大,可能会导致某些设备出现OOM(内存不足)问题,因为这些设备的可用内存可能不足以将映像加载到内存中。
    推荐文章