我尝试将视图保存到位图而不等待它呈现。 我请求渲染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:不允许硬编码延迟:)
答案 0 :(得分:0)
一个好方法是覆盖RecyclerView onMeasure方法,并获取宽度/高度值,如果它们刚刚创建为0,如果它们更大,那么在度量结束后你是否在onDraw上。