2017-08-04 78 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,如果不打印結果 –

相關問題