簡體   English   中英

如何將復雜的ViewGroup復制到位圖?

[英]How to copy a complicated ViewGroup to a bitmap?

無法使用狀態機從復雜的視圖制作位圖。

我有一個RelativeLayout,其中的動態視圖樹處理觸摸事件以繪制圖形。 它使用狀態機來跟蹤事件的發生,例如下移,上移和執行各種繪圖活動。

現在,我想每次視圖更改並在第二個屏幕上顯示時,都為此RelativeLayout制作一個副本(位圖)。 我嘗試了兩種在網上找到的方法:

  1. 畫(theSecondCanvas);
  2. 位圖緩存= getDrawingCache();

除了偶然的故障,兩者都大部分時間工作。 問題在於,這兩種方法最終都會再次調用每個子視圖的draw()在第二個畫布上進行繪制。 但是狀態機已根據上一次觸摸事件更改為其他狀態。 由於附加的繪圖請求沒有與之關聯的觸摸事件,因此使用空對象引用會給出不同的繪圖結果或有時會出現錯誤。

對我來說,一種選擇是在視圖樹中修復狀態機的復雜邏輯,以便它可以處理第二個畫布上的其他無狀態繪圖。

但是我認為這必須是一種從視圖中捕獲位圖而不再次繪制所有內容的簡單方法。 該視圖已經完成了所有內部繪圖。 只為了獲得位圖的副本而在第二個畫布上重復相同的工作是沒有意義的。

有什么建議么? 提前致謝!

我意識到在我的情況下不需要屏幕外渲染。 我可以截取默認畫布,並使用位圖在自己的畫布上繪制。 然后將位圖復制到默認畫布。 這樣就解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM