簡體   English   中英

在Android上,調用removeView時如何避免閃爍?

[英]On Android, how can I avoid flicker when calling removeView?

我有兩個重疊的 ImageView,我正在調用 removeView() 來刪除后面的那個。 當我這樣做時,我看到閃爍 - 被刪除的視圖被短暫地繪制在另一個視圖的頂部,然后它消失了。

我曾嘗試在刪除之前調用 setVisibility(View.GONE) 和 setVisibility(View.INVISIBLE),但都沒有幫助。

我怎樣才能避免這種情況?

我也遇到了同樣的問題。 最后,我刪除了removeView() ,只使用了setVisibility(View.GONE) 這樣可以避免閃爍。 但是我不確定setVisibility(View.GONE)是否等於removeView() 附加文檔:

setVisibility(View.GONE):該視圖不可見,並且不占用任何空間用於布局

我找到了這個簡單的解決方法,它首先通過View.Gone隱藏視圖,然后在 delay 后將其完全刪除以節省內存。

v.visibility = View.GONE
val handler =  Handler(Looper.getMainLooper())
handler.postDelayed({
    wm.removeView(v)
    }, 300)

如果你每次都創建一個新的 View 對象,這個方法是可以的; 但是如果您稍后要再次添加先前創建的視圖(相同的參考),那么您需要小心,因為該視圖可能尚未被刪除(如果是這種情況,調用addView會出錯)。 也許你可以先停止處理程序(通過使處理程序全局並調用handler.removeCallbacksAndMessages(null) )然后檢查v.parent != null以使用addViewupdateView

暫無
暫無

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

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