編輯:關於Android編程
我們在使用listview異步加載圖片 的時候,在快速滑動或者網絡不好的情況下,會出現圖片錯位,重復,閃爍等問題,其實這些問題總結起來就是一個問題,
比如listview上有100個item,一屏只顯示10個item,我們知道getView()中converView是用來復用view對象的,因為一個item的view對象,而imageview控件就是view通過findViewById()獲得的,而我們在復用view對象時,也就是說這個imageview也被復用了,比如第11個item的view復用了第一個itemv iew對象,那麼imageview就同時被復用了,而顯示圖片是通過imageview控件,所以當圖片沒下載出來,就這個imageview顯示的數據就是復用的數據
1:item圖片顯示重復?
這個顯示重復是指當前行item顯示了之前某行item的圖片
比如ListView滑動到第2行會異步加載某個圖片,但是加載很慢,加載過程中listView已經滑動到了第14行,且滑動過程中該圖片加載結束,
第2行已不在屏幕內,根據上面介紹的緩存原理,第2行的view可能被第14行復用,這樣我們看到的就是第14行顯示了本該屬於第2行的圖片,造成顯示重復
行item圖片顯示錯亂?
這個顯示錯亂是指某行item顯示了不屬於該行item的圖片。?
比如ListView滑動到第2行會異步加載某個圖片,但是加載很慢,加載過程中listView已經滑動到了第14行,第2行已不在屏幕內,
根據上面介紹的緩存原理,第2行的view可能被第14行復用,第14行顯示了第2行的View,這時之前的圖片加載結束,就會顯示在第14行,造成錯亂
行item圖片顯示閃爍?
上面b的情況,第14行圖片又很快加載結束,所以我們看到第14行先顯示了第2行的圖片,立馬又顯示了自己的圖片進行覆蓋造成閃爍錯亂
解決方案:
通過上面的分析我們知道了出現錯亂的原因是異步加載及對象被復用造成的,如果每次
getView
能給對象一個標識,
在異步加載完成時比較標識與當前行
item
的標識是否一致,
一
致則顯示,否則不做處理即可
通過上面的分析我們知道了出現錯亂的原因是異步加載及對象被復用造成的,如果每次
getView
能給對象一個標識,
在異步加載完成時比較標識與當前行
item
的標識是否一致,
一
致則顯示,否則不做處理即可
通過上面的分析我們知道了出現錯亂的原因是異步加載及對象被復用造成的,如果每次getView能給對象一個標識,在異步加載完成時比較標識與當前行item的標識是否一致,一致則顯示,否則不做處理即可
原理:首先給imageview設置一個tag,這個tag中設置的是url,然後在加載的時候取得這個url和要加載那position中的url對比,如果不相同就加載,相同就是復用以前的就不加載了
沉浸式狀態欄的來源就是很多手機用的是實體按鍵,沒有虛擬鍵,於是開了沉浸模式就只有狀態欄消失了。於是沉浸模式成了沉浸式狀態欄。我們先來看下具體的效果開啟沉浸模式後,狀態欄消
SoftAp界面開啟流程(讓你的手機支持SoftAp功能) 市面上大多數手機支持SoftAp功能,有少數手機沒有打開SoftAp的界面設置,所以無法開啟此功能(當然有些山
其實說到沉浸式狀態欄這個名字我也是感到很無奈,真不知道這種叫法是誰先發起的。因為Android官方從來沒有給出過沉浸式狀態欄這樣的命名,只有沉浸式模式(Imm
為了引入這個概率 首先從需求說起 即:現有某Activity專門用於手機屬性設置 那麼應該如何做呢? 根據已學知識 很快一個念頭閃過 即:Activity + Prefe