将视图保存到画布时,为什么缺少部分视图?

时间:2014-12-15 17:56:28

标签: android android-layout android-canvas android-view android-bitmap

我正在尝试像这样在Canvas上保存视图:

    View view = getView();

    Rect rect = new Rect();
    rect.set(0, 0, width, height);

    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);

    int widthSpec = View.MeasureSpec.makeMeasureSpec(rect.width(), View.MeasureSpec.EXACTLY);
    int heightSpec = View.MeasureSpec.makeMeasureSpec(rect.height(), View.MeasureSpec.EXACTLY);
    view.measure(widthSpec, heightSpec);

    view.layout(0, 0, rect.width(), rect.height());
    view.draw(canvas);

    imageView.setImageBitmap(bitmap);

视图相对复杂,当在屏幕上显示视图时,缺少一半的布局。 如果我不使用Canvas和ImageView,视图显示正常。

我见过这个问题: Canvas not displaying all drawn parts in Custom View?,但是我没有打开硬件加速(view.isHardwareAccelerated()返回false)。

这可能是什么问题? 我试过从视图中省略一些布局,使其不那么复杂,但仍然没有完全显示视图。 它似乎总是停止在同一点显示。

这是在不使用Canvas / Bitmap的情况下使图像看起来如何: How it should look like:

这是使用Canvas / Bitmap在ImageView中显示的方式: How it is displayed in the Bitmap saved to ImageView

0 个答案:

没有答案