Android RecyclerView打造自动循环效果
更新时间:2016年12月05日 17:11:16 作者:Timmy_zzh
这篇文章主要为大家详细介绍了android RecyclerView打造自动循环效果,非常实用的循环滚动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
先看效果图
主要处理的地方:
1、RecyclerView中Adapter的item个人可以无限轮询.
2、RecyclerView自动滑动
3、手指按下时滑动停止,手指抬起后继续自动滑动
public class AutoPollRecyclerView extends RecyclerView { private static final long TIME_AUTO_POLL = 16; AutoPollTask autoPollTask; private boolean running; //标示是否正在自动轮询 private boolean canRun;//标示是否可以自动轮询,可在不需要的是否置false public AutoPollRecyclerView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); autoPollTask = new AutoPollTask(this); } static class AutoPollTask implements Runnable { private final WeakReference<AutoPollRecyclerView> mReference; //使用弱引用持有外部类引用->防止内存泄漏 public AutoPollTask(AutoPollRecyclerView reference) { this.mReference = new WeakReference<AutoPollRecyclerView>(reference); } @Override public void run() { AutoPollRecyclerView recyclerView = mReference.get(); if (recyclerView != null && recyclerView.running &&recyclerView.canRun) { recyclerView.scrollBy(2, 2); recyclerView.postDelayed(recyclerView.autoPollTask,recyclerView.TIME_AUTO_POLL); } } } //开启:如果正在运行,先停止->再开启 public void start() { if (running) stop(); canRun = true; running = true; postDelayed(autoPollTask,TIME_AUTO_POLL); } public void stop(){ running = false; removeCallbacks(autoPollTask); } @Override public boolean onTouchEvent(MotionEvent e) { switch (e.getAction()){ case MotionEvent.ACTION_DOWN: if (running) stop(); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_OUTSIDE: if (canRun) start(); break; } return super.onTouchEvent(e); } }
Adapter处理:主要处理getItemCount()和数据填充的onBindViewHolder()方法
public class AutoPollAdapter extends RecyclerView.Adapter<BaseViewHolder> { private final Context mContext; private final List<String> mData; public AutoPollAdapter(Context context, List<String> list) { this.mContext = context; this.mData = list; } @Override public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_auto_poll, parent, false); BaseViewHolder holder = new BaseViewHolder(view); return holder; } @Override public void onBindViewHolder(BaseViewHolder holder, int position) { String data = mData.get(position%mData.size()); holder.setText(R.id.tv_content,data); } @Override public int getItemCount() { return Integer.MAX_VALUE; } }
最后附上Activity调用的代码
public class AutoPollRecyclerActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_auto_poll); initToolBar(); initView(); } private void initView() { AutoPollRecyclerView mRecyclerView = (AutoPollRecyclerView) findViewById(R.id.rv_recycleView); List<String> list = new ArrayList<>(); for (int i = 0; i < 5; ) { list.add(" Item: " + ++i); } AutoPollAdapter adapter = new AutoPollAdapter(this, list); mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.HORIZONTAL_LIST)); mRecyclerView.setAdapter(adapter); if (true) //保证itemCount的总个数宽度超过屏幕宽度->自己处理 mRecyclerView.start(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- Android中RecyclerView上拉下拉,分割线,多条目的实例代码
- Android RecyclerView详解及简单实例
- Android开发中RecyclerView模仿探探左右滑动布局功能
- Android 中RecyclerView多种item布局的写法(头布局+脚布局)
- Android基于RecyclerView实现高亮搜索列表
- Android RecyclerView下拉刷新和上拉加载更多
- Android中RecyclerView嵌套滑动冲突解决的代码片段
- Android中实现淘宝购物车RecyclerView或LIstView的嵌套选择的逻辑
- Android使用recyclerview打造真正的下拉刷新上拉加载效果
- Android 滑动监听RecyclerView线性流+左右划删除+上下移动
- Android RecyclerView 上拉加载更多及下拉刷新功能的实现方法
- Android使用RecyclerView实现水平滚动控件
- Android RecyclerView的Item点击事件实现整理
相关文章
Android获取RecyclerView滑动距离方法详细讲解
RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。接下来讲解RecyclerView的用法2023-01-01Android编程实现的微信支付功能详解【附Demo源码下载】
这篇文章主要介绍了Android编程实现的微信支付功能,结合实例形式详细分析了Android微信支付功能的实现步骤与具体操作技巧,并附带了Demo源码供读者下载参考,需要的朋友可以参考下2017-07-07Android使用RecyclerView实现列表数据选择操作
这篇文章主要为大家详细介绍了Android使用RecyclerView结合CheckBox实现列表数据选择操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-06-06
最新评论