- 左圖,橫屏時,左側 RecyclerView 高度不需要佔滿屏幕,但出現被強行佔滿,只好重寫onMeasure
- 由於視頻播放View組件要不但要在橫豎屏展示,還要雙擊跳到大屏上,只想到了管理View對象,在onBindViewHolder 時動態添加VideoView,爲了刷新圖片不閃爍更好的性能,取消動畫,itemAnimator.setSupportsChangeAnimations(false) ,setHasFixedSize =true , 又爲了能正常推拉流,setIsRecyclable=false.
notifyDataSetChanged 下完成沒問題。但由於1個屬性改變,每次全部更新,導致了VideoView 黑屏, - DiffUtil 局部刷新,出現了item 能插入,不能移除的問題,調試源碼發現,triggerUpdateProcessor方法裏面,mHasFixedSize =true, 不會走requestLayout。手動調用requestLayout,或註釋setHasFixedSize 能解決item 增加、移出刷新問題,緊接着局部刷新失效了,局部刷新調試時onBindViewHolder 以及payloads 方法都有進來以及更新了相應UI,但是Item界面沒有發生任何變化。調試發現調用rv.requestLayout 方法失效了,造成原因不清楚。後來把setIsRecyclable 註釋掉,局部刷新好了,不過,視頻™的播不出,其它UI能正常顯示,相關函數也正常被調用,後來我註釋setSupportsChangeAnimations ,居然好了。摁,就這樣吧,閃點沒關係了/:😃
要玩局部刷新,setHasFixedSize,setSupportsChangeAnimations,setIsRecyclable API 使用慎重慎重