美文网首页
RecyclerView item加载动画

RecyclerView item加载动画

作者: 云烟渐成雨 | 来源:发表于2019-08-04 16:35 被阅读0次

效果图:

gif.gif

xml文件

在res目录下新建文件夹命名为anim,在anim中新建xml文件

item_anim.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="500"
        android:fromXDelta="100%"
        android:fromYDelta="0"
        android:toXDelta="0"
        android:toYDelta="0" />
    <alpha
        android:duration="500"
        android:fromAlpha="0"
        android:toAlpha="1" />

</set>
translate 位置转移动画效果

整型值:

  • fromXDelta 属性为动画起始时X坐标上的位置
  • toXDelta 属性为动画结束时X坐标上的位置
  • fromYDelta 属性为动画起始时Y坐标上的位置
  • toYDelta 属性为动画结束时Y坐标上的位置

注意: 没有指定参照物时,默认是以自己为相对参照物

长整型值:

  • duration 属性为动画持续时间时间以毫秒为单位
alpha 透明度渐变效果
  • fromAlpha 开始时透明度
  • toAlpha 结束时透明度
  • 数值范围(0~1)

在Activity或Fragment中

//设置动画效果
private void initAnim() {
        //通过加载XML动画设置文件来创建一个Animation对象;
        Animation animation = AnimationUtils.loadAnimation(getContext(), R.anim.item_anim);
        //得到一个LayoutAnimationController对象;
        LayoutAnimationController lac = new LayoutAnimationController(animation);
        //设置控件显示的顺序;
        lac.setOrder(LayoutAnimationController.ORDER_NORMAL);
        //设置控件显示间隔时间;
        lac.setDelay(0.3f);
        //为ListView设置LayoutAnimationController属性;
        mXRecyclerView.setLayoutAnimation(lac);
    }

获取到数据后调用,首次进入和刷新都会触发动画

public void initRecyclerViewAnim(List<ItemBean> list) {
        initAnim();
        if (list != null && list.size() > 0) {
            if (mAdapter == null) {
                mAdapter = new RVBeanAdapter(getActivity());
                getActivity().runOnUiThread(() -> {
                    mXRecyclerView.setAdapter(mAdapter);
                    //刷新逻辑
                    mAdapter.refreshData(list);
                });
            } else {
                getActivity().runOnUiThread(() -> mAdapter.refreshData(list));
            }
        }
    }
/**
     * 刷新数据
     *
     * @param data 数据源
     */
    public void refreshData(List<T> data) {
        mList.clear();
        mList.addAll(data);
        notifyDataSetChanged();
    }

demo地址:https://github.com/fr1014/LoadAndRefresh
注:此次的代码是基于上篇文章(RecyclerView + DataBinding实现的下拉刷新与加载更多)中添加,文章地址:https://www.jianshu.com/p/491dbf93e448

相关文章

网友评论

      本文标题:RecyclerView item加载动画

      本文链接:https://www.haomeiwen.com/subject/jpsydctx.html