Android recyclerView横条指示器实现淘宝菜单模块

 更新时间:2020年02月28日 08:45:12   作者:一般的帅gg  
这篇文章主要为大家详细介绍了recyclerView横条指示器实现淘宝菜单模块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

电商首页菜单模块,可以横向滑动,底部的滑动位置指示器该如何实现呢?

实现思路:

1.上方横滑列表可以直接使用RecyclerView实现;

2.下方的指示器:

(1).计算出RecyclerView划出屏幕的距离w1和剩余宽度w2的比例y,y = w1 / (总宽度w3 - 可使视区域宽度w4);

(2).计算出指示器该移动的距离w5 = y * (指示器的总宽度w6 - 滑块宽度w7);

(3).指示器布局实现:

<RelativeLayout
  android:id="@ id/parent_layout"
  android:layout_marginTop="10dp"
  android:layout_width="80dp"
  android:layout_height="4dp"
  android:layout_gravity="center"
  android:background="@drawable/bg_store_classify_normal">

  <View
   android:id="@ id/main_line"
   android:layout_width="40dp"
   android:layout_height="4dp"
   android:layout_centerVertical="true"
   android:background="@drawable/bg_store_classify_selected" />
</RelativeLayout>

(4).代码调用:

rcvClassifyTypes.addOnScrollListener(new RecyclerView.OnScrollListener() {
 @Override
 public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
  super.onScrollStateChanged(recyclerView, newState);
 
 }
 
 @Override
 public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
  super.onScrolled(recyclerView, dx, dy);
  //整体的总宽度,注意是整体,包括在显示区域之外的
  //滚动条表示的总范围
  int temp = rcvClassifyTypes.computeHorizontalScrollRange();
  if (temp > range) {
   range = temp;
  }
  //滑块的偏移量
  int offset = rcvClassifyTypes.computeHorizontalScrollOffset();
  //可视区域长度
  int extent = rcvClassifyTypes.computeHorizontalScrollExtent();
  //滑出部分在剩余范围的比例
  float proportion = (float) (offset * 1.0 / (range - extent));
  //计算滚动条宽度
  float transMaxRange = parentLayout.getWidth() - childline.getWidth();
  //设置滚动条移动
  childline.setTranslationX(transMaxRange * proportion);
 }
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android捕捉错误try catch 的简单使用教程

    Android捕捉错误try catch 的简单使用教程

    这篇文章主要介绍了Android捕捉错误try catch 的简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Android实现RecyclerView下拉刷新效果

    Android实现RecyclerView下拉刷新效果

    这篇文章主要为大家详细介绍了Android实现RecyclerView下拉刷新效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • RecylerView实现流布局StaggeredGridLayoutManager使用详解

    RecylerView实现流布局StaggeredGridLayoutManager使用详解

    这篇文章主要为大家详细介绍了RecylerView实现流布局StaggeredGridLayoutManager使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Flutter适配深色模式的方法(DarkMode)

    Flutter适配深色模式的方法(DarkMode)

    这篇文章主要介绍了Flutter适配深色模式的方法(DarkMode),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 如何在Android studio 中使用单例模式

    如何在Android studio 中使用单例模式

    这篇文章主要介绍了如何在Android studio 中使用单例模式,帮助大家更好的理解和学习Android开发,感兴趣的朋友可以了解下
    2021-03-03
  • Flutter封装组动画混合动画AnimatedGroup示例详解

    Flutter封装组动画混合动画AnimatedGroup示例详解

    这篇文章主要为大家介绍了Flutter封装组动画混合动画AnimatedGroup示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Android使用Retrofit实现自定义Converter解析接口流程详解

    Android使用Retrofit实现自定义Converter解析接口流程详解

    Retrofit是一个RESTful的HTTP网络请求框架的封装,网络请求的工作本质上是OkHttp完成,而Retrofit仅负责网络请求接口的封装
    2023-03-03
  • Flutter加载图片的多样玩法汇总

    Flutter加载图片的多样玩法汇总

    flutter一般分为两种图片加载的方式:网络加载和本地加载,下面这篇文章主要给大家介绍了关于Flutter加载图片的多样玩法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • Android使用NumberPicker实现滑轮日期选择器

    Android使用NumberPicker实现滑轮日期选择器

    这篇文章主要为大家介绍了如何使用Android中的NumberPicker控件,以一种简单而直观的方式实现滑轮式的日期选择器,需要的小伙伴可以参考一下
    2023-06-06
  • Android中快速便捷的实现圆角按钮方法详解

    Android中快速便捷的实现圆角按钮方法详解

    圆角按钮在我们现在的界面中常常会用到,最近在开发中就又遇到了,所以想着有没有更快速更便捷的实现方法呢,所以就有了这篇文章,本文主要给大家介绍了关于Android中如何快速便捷的实现圆角按钮的相关资料,需要的朋友可以参考下。
    2017-05-05

最新评论