RecyclerView item加载动画

效果图:

gif.gif

xml文件

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

item_anim.xml




    
    


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 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 data) {
        mList.clear();
        mList.addAll(data);
        notifyDataSetChanged();
    }

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

你可能感兴趣的:(RecyclerView item加载动画)