界面无小事(一):RecyclerView+CardView了解一下
界面无小事(二):让RecyclerView展示更多不同视图
界面无小事(三):用RecyclerView + Toolbar做个文件选择器
界面无小事(四):来写个滚动选择器吧!
界面无小事(五):自定义TextView
界面无小事(六):来做个好看得侧拉菜单!
界面无小事(七):使用代码动态增删布局
目录
- 前言
- 增删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());
SlideInLeftAnimator ScaleInAnimator LandingAnimator好了, 接下来看几个效果图吧:
最后
喜欢记得点赞哦, 有意见或者建议评论区见, 暗中关注我也是可以的.
网友评论