这是第一篇在慕课首发的文章, 为了发这篇, 搬运了好几篇有关联的文章来. 容我吐槽一下, 慕课的md很奇怪, 用着不太舒服. 你可以到掘金或者简书来看看我, 至少目前我在那里的文章更多更全.
目录
- 前言
- 增删item
- 自定义增删动画
- 最后
前言
之前写过一篇代码动态增删布局的, 那这次就对比下RecyclerView的增删item, 说句实话, 代码动态增删布局基本可以退群了.
增删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());
好了, 接下来看几个效果图吧:
最后
喜欢记得点赞哦, 有意见或者建议评论区见, 暗中关注我也是可以的.
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦