[英]android - LinearLayout become visible when calling removeView() after fade out
[英]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
以使用addView
或updateView
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.