目錄
- 前言
- 增删item
- 自定義增删動畫
- 最後
之前寫過一篇 代碼動态增删布局 的, 對比下這次的RecyclerView增删item, 說句實話, 代碼動态增删布局基本可以退群了.
當然首先你可以按照第一篇- 界面無小事(一): RecyclerView+CardView了解一下 建立基礎的RecyclerView. 這次的關鍵是在擴充卡代碼中加入增删item的操作. 要注意一點, 重新整理和原來在ListView的操作是不一樣的. 你可以直接看 官方文檔 , 大緻有這幾個:
- notifyItemInserted()
- notifyItemRemoved()
- notifyItemMoved()
- notifyItemChanged()
在擴充卡中加入如下代碼:
public void addData(int position) {
mData.add(position, "hello python");
notifyItemInserted(position);
}
public void removeData(int position) {
mData.remove(position);
notifyItemRemoved(position);
}
然後我們在toolbar中加上add和del按鈕, 對應這兩個方法.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/add"
android:icon="@mipmap/ic_launcher"
android:title="@string/add"
app:showAsAction="never" />
<item
android:id="@+id/del"
android:icon="@mipmap/ic_launcher"
android:title="@string/del"
app:showAsAction="never" />
</menu>
并且設定長按為删除操作, 點選是增加操作. 好了, 上效果圖:
效果圖
不單單是我示範的這種布局, 還有線型的, 橫向的, 瀑布流都可以有這種類似效果. 可參考 界面無小事(二): 讓RecyclerView展示更多不同視圖 .
那既然有預設動畫, 肯定就能自定義動畫了. 在這之前, 先說說幾個方法. 用來設定動畫的具體狀态的持續時間.
rvTest.getItemAnimator().setAddDuration(400);
rvTest.getItemAnimator().setRemoveDuration(400);
rvTest.getItemAnimator().setMoveDuration(400);
rvTest.getItemAnimator().setChangeDuration(400);
這裡借助 開源項目. 因為這個項目真的足夠地棒.
自帶動畫個數都已經足夠用了, 見下. 你還可以繼續在這基礎上自定義. 是不是感覺三生萬物了.
Animators
分類 | 動畫類名 |
---|---|
Cool | LandingAnimator |
Scale | ScaleInAnimator, ScaleInTopAnimator, ScaleInBottomAnimator, ScaleInLeftAnimator, ScaleInRightAnimator |
Fade | FadeInAnimator, FadeInDownAnimator, FadeInUpAnimator, FadeInLeftAnimator, FadeInRightAnimator |
Flip | FlipInTopXAnimator, FlipInBottomXAnimator, FlipInLeftYAnimator, FlipInRightYAnimator |
Slide | SlideInLeftAnimator, SlideInRightAnimator, OvershootInLeftAnimator, OvershootInRightAnimator, SlideInUpAnimator, SlideInDownAnimator |
而且非常難得的是使用方法還很簡單, 需要幾個步驟
- 在Module的build.gradle中寫入
dependencies {
implementation 'jp.wasabeef:recyclerview-animators:2.3.0'
}
- 在Project的build.gradle中寫入
repositories {
google()
jcenter()
}
具體使用部分隻要用動畫類名替換之前預設的動畫類名即可. 例如:
rvTest.setAdapter(mAdapter);
rvTest.setItemAnimator(new SlideInLeftAnimator());
好了, 接下來看幾個效果圖吧:
SlideInLeftAnimator
ScaleInAnimator
喜歡記得點贊哦, 有意見或者建議評論區見, 暗中關注我也是可以的.