三处代码实现Adapter加载动画,还可自定义动画效果

来源:互联网 发布:mac终端物理地址错误 编辑:程序博客网 时间:2024/06/05 20:17

转载地址:http://blog.csdn.net/pengkv/article/details/49448905




目录(?)[-]

  1. 效果图
  2. 第一步添加滑动监听
  3. 第二步在适配器里设置动画
  4. 第三步回收动画防止卡顿
  5. 附源码下载

效果图:

由于不会录制gif,所以只有截图展示效果,希望各位能告知如何截动态图

这里写图片描述

第一步:添加滑动监听

 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {//判断滑动方向            @Override            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                super.onScrolled(recyclerView, dx, dy);                if (dy > 0) {                    isScrollToTop = false;                } else {                    isScrollToTop = true;                }            }        });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

第二步:在适配器里设置动画

        @Override        public void onBindViewHolder(MyViewHolder holder, int position) {            if (isScrollToTop) {//根据滑动方向设置动画                holder.itemView.setAnimation(AnimationUtils.loadAnimation(mContext, R.anim.anim_rotate_in_top));            } else {                holder.itemView.setAnimation(AnimationUtils.loadAnimation(mContext, R.anim.anim_rotate_in_bottom));            }            // 其他数据操作        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

第三步:回收动画,防止卡顿

        @Override   //视图不可见时回收动画        public void onViewDetachedFromWindow(MyViewHolder holder) {            super.onViewDetachedFromWindow(holder);            holder.itemView.clearAnimation();        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

附:源码下载

我是源码


目录(?)[-]

  1. 效果图
  2. 第一步添加滑动监听
  3. 第二步在适配器里设置动画
  4. 第三步回收动画防止卡顿
  5. 附源码下载

效果图:

由于不会录制gif,所以只有截图展示效果,希望各位能告知如何截动态图

这里写图片描述

第一步:添加滑动监听

 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {//判断滑动方向            @Override            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                super.onScrolled(recyclerView, dx, dy);                if (dy > 0) {                    isScrollToTop = false;                } else {                    isScrollToTop = true;                }            }        });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

第二步:在适配器里设置动画

        @Override        public void onBindViewHolder(MyViewHolder holder, int position) {            if (isScrollToTop) {//根据滑动方向设置动画                holder.itemView.setAnimation(AnimationUtils.loadAnimation(mContext, R.anim.anim_rotate_in_top));            } else {                holder.itemView.setAnimation(AnimationUtils.loadAnimation(mContext, R.anim.anim_rotate_in_bottom));            }            // 其他数据操作        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

第三步:回收动画,防止卡顿

        @Override   //视图不可见时回收动画        public void onViewDetachedFromWindow(MyViewHolder holder) {            super.onViewDetachedFromWindow(holder);            holder.itemView.clearAnimation();        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

附:源码下载

我是源码

0 0