本文共 1847 字,大约阅读时间需要 6 分钟。
之前写过一篇的, 对比下这次的RecyclerView增删item, 说句实话, 代码动态增删布局基本可以退群了.
当然首先你可以按照第一篇-建立基础的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按钮, 对应这两个方法.
并且设置长按为删除操作, 点击是增加操作. 好了, 上效果图:
不单单是我演示的这种布局, 还有线型的, 横向的, 瀑布流都可以有这种类似效果. 可参考.
那既然有默认动画, 肯定就能自定义动画了. 在这之前, 先说说几个方法. 用来设置动画的具体状态的持续时间.
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());
好了, 接下来看几个效果图吧:
喜欢记得点赞哦, 有意见或者建议评论区见, 暗中关注我也是可以的.
转载地址:http://orhga.baihongyu.com/