画布什么时候填满?

时间:2017-08-04 19:43:36

标签: android canvas bitmap

我尝试将视图保存到位图而不等待它呈现。 我请求渲染RecyclerView,然后执行:

Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Config.ARGB_8888);
View view = activity.findViewById(R.id.my_view);
view.draw(new Canvas(bitmap));

但是,如果我立即保存位图,它将是空的,因为我的回收器视图下的视图仍在绘制中。 我厌倦了使用ViewTreeObserver并添加OnGlobalLayoutListener,但问题仍然存在 - 该回调过早被调用。

如何可靠地等待填充位图/画布?是否有特定的回调?

PS:不允许硬编码延迟:)

1 个答案:

答案 0 :(得分:0)

一个好方法是覆盖RecyclerView onMeasure方法,并获取宽度/高度值,如果它们刚刚创建为0,如果它们更大,那么在度量结束后你是否在onDraw上。