RecyclerView 实现轮播图
来源:互联网 发布:易语言安装包源码 编辑:程序博客网 时间:2024/06/05 16:14
有的同学很想实现自己的轮播图 但是却弄了一通放弃了 现在RecyclerView出现之后 很多同学就可以放心了 他有个非常棒的方法 能够像ViewPager一样 单页横向切换,且滑动到一半 或者一部分 自动滑动回去 或者 滑向下一页
Support RecyclerView 24.2.0中增加一个非常重要的类
重点在于
SnapHelper
,他的作用是让RecyclerView滑动视图后使停止位置正好停在某页的正中间。使用方式很简单重点在于
new LinearSnapHelper().attachToRecyclerView(recyclerView);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false);recyclerView.setLayoutManager(linearLayoutManager);new LinearSnapHelper().attachToRecyclerView(recyclerView);
关键就是这个linearSnapHelper
无限滑动就是 将 apdater的getCount()方法中的 返回值 调整Integer.MAX_VALUE
接着就是让他定时滑动了 定时滑动 无非就是利用handler定时发送一个消息 然后滑动
private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case SCROLL_WHAT: if (getLayoutManager() instanceof LinearLayoutManager && getAdapter() != null) { LinearLayoutManager linearLayoutManager = (LinearLayoutManager) getLayoutManager(); int lastVisibleItemPosition = linearLayoutManager.findLastVisibleItemPosition(); int adapterSize = getAdapter().getItemCount(); if (adapterSize < 2) return;//这里 count大于等于2个才开始轮播 if (lastVisibleItemPosition >= (adapterSize - 1)) { smoothScrollToPosition(0); } else { smoothScrollToPosition(lastVisibleItemPosition + 1); }handler.sendEmptyMessageDelayed(SCROLL_WHAT, 1500);} break; } }};当然如果用户 手指在轮播图上了 要停止滑动了 这个就要监听onTouch事件了private RecyclerView.OnItemTouchListener onItemTouchListener = new OnItemTouchListener() { @Override public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { int action = MotionEventCompat.getActionMasked(e); if ((action == MotionEvent.ACTION_DOWN)) {//当按下无非就是 移除消息 来停止滑动handler.removeMessages(SCROLL_WHAT);} else if (e.getAction() == MotionEvent.ACTION_UP) {//当手指抬起是 再次发送消息 来 使轮播图重新滚动起来handler.sendEmptyMessageDelayed(SCROLL_WHAT, delayTimeInMills);} return false; }@Overridepublic void onTouchEvent(RecyclerView rv, MotionEvent e) { }
@Overridepublic void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { }};
阅读全文
0 0
- RecyclerView实现广告轮播图
- RecyclerView 实现轮播图
- RecyclerView实现广告轮播图(一)
- 简单的实现轮播图和RecyclerView效果
- RecyclerView实现Gallery
- 使用ViewGroup实现RecyclerView
- RecyclerView实现手风琴效果
- RecyclerView实现倒序列表
- RecyclerView下拉刷新实现
- RecyclerView实现加载更多
- RecyclerView实现多布局
- 实现RecyclerView的监听
- RecyclerView(实现分割线)
- RecyclerView实现瀑布流
- RecyclerView实现 gridview效果!
- RecyclerView实现Listview-1
- RecyclerView实现Listview效果
- Android-RecyclerView 实现步骤
- mysql性能优化-慢查询分析、优化索引和配置
- NPOI操作EXCEL导出
- 设计模式——简单工厂模式
- bzoj 3212
- NBU Rman异机恢复Oracle
- RecyclerView 实现轮播图
- 这两天看到了一下大神SQL数据库的优化随手记录了一波
- 随机抽样一致 RANSAC(转)
- Mybatis之批量操作-Oracle
- Spark2.0: Structured Streaming
- LuoguP2397 yyy loves Maths VI
- Java集合---Arrays类源码解析
- 自然语言 基础(一)
- nginx proxy_set_header设置、自定义header