[英]How to animate recyclerView on notifyDataSetChanged?
我有一個 recyclerview,它是一個文件夾列表。 當我單擊一個項目時,該文件夾內的文件夾/文件是新列表。 我想玩滑出舊列表並滑入新列表的animation。 它應該看起來像進入或離開目錄。
我已經這樣實現了:
// rv : RecyclerView
rv.startAnimation(AnimationUtils.loadAnimation(context, R.anim.slide_out_to_left))
adapter.list = list
rv.notifyDataSetChanged()
rv.startAnimation(AnimationUtils.loadAnimation(context, R.anim.slide_in_from_right))
但是只有后面的 animation 顯示?
我唯一能想到的是 notifyDataSetChanged() 非常具有破壞性,它可能會在您的 animation 開始之前被調用。
我的建議是延遲
adapter.list = list
rv.notifyDataSetChanged()
rv.startAnimation(AnimationUtils.loadAnimation(context, R.anim.slide_in_from_right))
直到
rv.startAnimation(AnimationUtils.loadAnimation(context,R.anim.slide_out_to_left))
有足夠的時間運行。 這是上一個答案的鏈接,該鏈接顯示了如何設置 onAnimationFinished 偵聽器,該偵聽器應偵聽第一個 animation 完成。 在 Android 的 RecyclerView 中檢測 animation 完成
Animation animation = AnimationUtils.loadAnimation(getContext(),R.anim.slide_out_to_left);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) { }
@Override
public void onAnimationEnd(Animation animation) {
adapter.list = list;
adapter.notifyDataSetChanged();
rv.startAnimation(AnimationUtils.loadAnimation(context, R.anim.slide_in_from_right));
}
@Override
public void onAnimationRepeat(Animation animation) {}
});
rv.startAnimation(animation));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.