2017-08-04 58 views
0

我试图将视图保存到位图而不等待它呈现。 我要求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

一个好的方法是重写RecyclerView onMeasure方法,并获得宽度/高度值,如果他们是他们刚刚创建0,如果他们是更大的,度量结束后,您是否在绘图。

+0

这是一个测试,我正在不断更新RecyclerView,新孩子在每次迭代中都会保存位图。那么这种方法是否仅仅适用于第一次迭代时Recycler视图还没有绘制完成? –

+0

是的,其他的方法是在onDraw中如果大小= 0,0,如果不打印结果 –

相关问题