我正在尝试像这样在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的情况下使图像看起来如何:
这是使用Canvas / Bitmap在ImageView中显示的方式: