日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

去掉RecyclerView的默认item动画

發布時間:2023/12/14 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 去掉RecyclerView的默认item动画 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

去掉RecyclerView的默認item動畫
https://blog.csdn.net/CSDN_LQR/article/details/54766560
雖說RecyclerView的默認item動畫很炫酷,但是在開發中,客戶的需求可能并不需要使用item動畫,不僅覺得沒用,反而覺得這些item動畫是程序的bug。

本人在做開發仿微信項目時就遇到這類問題,動態增加、刪除條目時就有一個切換的動畫,這明顯不是我想要的,于是百度,百度到一篇有點用的文章(RecyclerView局部刷新動畫屏蔽添加鏈接描述),文章說到的只是針對RecyclerView的notifyItemChanged,notifyItemAdd,notifyItemRemoved方法的默認動畫進行屏蔽,設置之后并不能解決我的問題,沒有效果。

于是,繼續研究,最后,得到一個結論:為了解決上述問題,有兩種做法,一種是重寫ItemAnimator并對RecyclerView進行設置(網友說的,但沒有給出代碼…),另一種是設置ItemAnimator的動畫時間(自己無意間想到的,why? I don’t know),權衡自己的目前實力和項目時間,我決定使用第二種方式,在RecyclerView的源碼中可以看到各種動畫的執行時長如下:

private long mAddDuration = 120; private long mRemoveDuration = 120; private long mMoveDuration = 250; private long mChangeDuration = 250;

而RecyclerView自帶getItemAnimator().setXXDuration();方法。所以,接下來直接上代碼(該代碼中的this指的就是RecyclerView,是本人一個開源項目LQRRecyclerViewLibrary中的部分代碼片段):

/*** 打開默認局部刷新動畫*/public void openDefaultAnimator() {this.getItemAnimator().setAddDuration(120);this.getItemAnimator().setChangeDuration(250);this.getItemAnimator().setMoveDuration(250);this.getItemAnimator().setRemoveDuration(120);((SimpleItemAnimator) this.getItemAnimator()).setSupportsChangeAnimations(true);}/*** 關閉默認局部刷新動畫*/public void closeDefaultAnimator() {this.getItemAnimator().setAddDuration(0);this.getItemAnimator().setChangeDuration(0);this.getItemAnimator().setMoveDuration(0);this.getItemAnimator().setRemoveDuration(0);((SimpleItemAnimator) this.getItemAnimator()).setSupportsChangeAnimations(false);}

總結

以上是生活随笔為你收集整理的去掉RecyclerView的默认item动画的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。