给RecyclerView 添加进程动画 ————万能适配器的下拉加载实现

你只需要在

RecyclerView里面 实现
onViewAttachedToWindow方法  在方法里面设置你要的动画就可以实现

动画工具类

public class ScaleInAnimation{
    private static final float DEFAULT_SCALE_FROM = .5f;
    private final float mFrom;

    public ScaleInAnimation() {
        this(DEFAULT_SCALE_FROM);
    }

    public ScaleInAnimation(float from) {
        mFrom = from;
    }

    public Animator[] getAnimators(View view) {
        ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, "scaleX", mFrom, 1f);
        ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, "scaleY", mFrom, 1f);
        return new ObjectAnimator[]{scaleX, scaleY};
    }
}

 

以下我拿万能适配器实现的代码



public class QuickMeasureAdapter extends BaseQuickAdapter<MeasuerSQLBean,BaseViewHolder> {
    public QuickMeasureAdapter(@Nullable List<MeasuerSQLBean> data) {
        super(R.layout.recycler_meaureitem,data);
    }

    @Override
    protected void convert(BaseViewHolder helper, MeasuerSQLBean item) {

      
    }

    @Override
    public void onViewAttachedToWindow(BaseViewHolder holder) {
        super.onViewAttachedToWindow(holder);
        addAnimation(holder);
    }



    private ScaleInAnimation mSelectAnimation = new ScaleInAnimation();

    private void addAnimation(BaseViewHolder holder) {
        for (Animator anim : mSelectAnimation.getAnimators(holder.itemView)) {
            anim.setDuration(1500).start();
            anim.setInterpolator(new LinearInterpolator());
        }
    }
}

 

接下来是万能适配器的下拉加载实现

 

首先先是给他添加4条数据

 if (Measuerlists==null){
            Measuerlists=new ArrayList<>();
        }
        if (Measuerlists!=null){
                Measuerlists.clear();
                if (allSQLBeanDao.size()>=4){
                    for (int i = 0; i < 4; i++) {
                        Measuerlists.add(allSQLBeanDao.get(i));
                    }
                }else{
                    for (int i = 0; i < allSQLBeanDao.size(); i++) {
                        Measuerlists.add(allSQLBeanDao.get(i));
                    }
                }
            }

 

之后把集合添加到适配器

 


//上拉加载(设置这个监听就表示有上拉加载功能了)
        quickMeasureAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
            private boolean isErr=true;
            private int mCurrentCounter;
            @Override public void onLoadMoreRequested() {
                recycler_measure.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        mCurrentCounter = quickMeasureAdapter.getData().size();
        //TOTAL_COUNTER 是你一个有多少条数据的size
                        if (mCurrentCounter >= TOTAL_COUNTER) {
                            //数据全部加载完毕
                            Toast.makeText(getContext(), "数据全部加载完毕", Toast.LENGTH_SHORT).show();
                            quickMeasureAdapter.loadMoreEnd();
                        } else {
                            if (isErr) {
                                //成功获取更多数据(可以直接往适配器添加数据)
                                addData(mCurrentCounter);
                                //主动调用加载完成,停止加载
                                quickMeasureAdapter.loadMoreComplete();
                            } else {
                                //获取更多数据失败
                                isErr = true;
                                Toast.makeText(getContext(), "获取更多数据失败", Toast.LENGTH_SHORT).show();
                                //同理,加载失败也要主动调用加载失败来停止加载(而且该方法会提示加载失败)
                                quickMeasureAdapter.loadMoreFail();

                            }
                        }
                    }

                }, 2000);
            }
        });
        quickMeasureAdapter.setEnableLoadMore(true);



}

    
//添加的数据
private void addData(int mCurrentCounter) {
        if (addmeauserlist==null){
            addmeauserlist=new ArrayList<>();

        }
        if (addmeauserlist!=null){
            addmeauserlist.clear();
            List<MeasuerSQLBean> allSQLBeanDao = getAllSQLBeanDao();
            for (int i = mCurrentCounter; i < mCurrentCounter+4; i++) {

                if (i<allSQLBeanDao.size())
                addmeauserlist.add(allSQLBeanDao.get(i));

            }
            quickMeasureAdapter.addData(addmeauserlist);
        }
    }

完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值