界面无小事 (一):RecyclerView+CardView 了解一下
界面无小事 (二): 让 RecyclerView 展示更多不同视图
界面无小事 (三): 用 RecyclerView + Toolbar 做个文件选择器
界面无小事 (四): 来写个滚动选择器吧!
界面无小事 (五): 自定义 TextView
界面无小事 (六): 来做个好看得侧拉菜单!
界面无小事 (七): 使用代码动态增删布局
目录
前言
增删 item
自定义增删动画
最后
前言
之前写过一篇代码动态增删布局的, 对比下这次的 RecyclerView 增删 item, 说句实话, 代码动态增删布局基本可以退群了.
增删 item
当然首先你可以按照第一篇 - 界面无小事 (一): RecyclerView+CardView 了解一下建立基础的 RecyclerView. 这次的关键是在适配器代码中加入增删 item 的操作. 要注意一点, 刷新和原来在 ListView 的操作是不一样的. 你可以直接看官方文档 https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter , 大致有这几个:
- 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);
自定义增删动画
这里借助开源项目 https://github.com/wasabeef/recyclerview-animators . 因为这个项目真的足够地棒.
自带动画个数都已经足够用了, 见下. 你还可以继续在这基础上自定义. 是不是感觉三生万物了.
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
LandingAnimator
最后
喜欢记得点赞哦, 有意见或者建议评论区见, 暗中关注我也是可以的.
来源: http://www.jianshu.com/p/aab1688607f0