我是个球迷,喜欢看各种篮球 足球比赛,所以手机里面也安装了各种体育类APP,之前就发现了一个有趣的自定义view,很多场景都能通用 比如:

(虎扑)体育app,球队积分/比赛数据自定view

股票,基金,区块链页面等

下面上图

以上是别人APP的效果图,下面我把我写的demo的效果图放出来

从现在来看,这2个是可以一起联动的,当然,如果你根据你的需要,也是可以不设置联动

核心代码

  leftRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrollStateChanged(RecyclerView recyclerView, int newState) {super.onScrollStateChanged(recyclerView, newState);}@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);if (RecyclerView.SCROLL_STATE_IDLE != recyclerView.getScrollState()) {rightRecycler.scrollBy(dx, dy);}}});rightRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrollStateChanged(RecyclerView recyclerView, int newState) {super.onScrollStateChanged(recyclerView, newState);}@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);if (RecyclerView.SCROLL_STATE_IDLE != recyclerView.getScrollState()) {leftRecycler.scrollBy(dx, dy);}}});

思路分析

1.根据虎扑的效果图可以看到,该页面主要是一个大列表(2个小列表)

2.头部的tab栏可以水平滑动,或者整体水平滑动,所以父布局用 HorizontalScrollView 实现;

3.列表 Item 分1部分 ,这里我用的是一排数据结果,所谓的各项分数

4.头部 Tab 栏水平滑动时,列表 Item 同步滑动;

5.ScrollView  跟 RecyclerView滑动冲突了

代码部分

1、自定义横向滚动控件

  • 因为上面已经分析,头部 Tab 栏父布局和 item 第二部分同步滑动,所以都采用横向滚动控件完成,所以自定义横向滚动控件,继承 HorizontalScrollView 并重写构造方法,这里重写了 3 个构造方法。
/*** 自定义横向滚动控件* 重载了 onScrollChanged方法,监听每次的变化*/public class CustomHScrollView extends HorizontalScrollView {ScrollViewObserver mScrollViewObserver = new ScrollViewObserver();public CustomHScrollView(Context context) {super(context);}public CustomHScrollView(Context context, AttributeSet attrs) {super(context, attrs);}public CustomHScrollView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}
}
  • 定义外部可回调接口,当发生了滚动事件时接口,供外部访问
public static interface OnScrollChangedListener {public void onScrollChanged(int l, int t, int oldl, int oldt);
}
  • 定义一个观察者,用于滑动控件时,接收水平滑动的回调。并定义添加滚动监听和移除滚动监听的方法。
 /** 滚动观察者*/public static class ScrollViewObserver {List<OnScrollChangedListener> mChangedListeners;public ScrollViewObserver() {super();mChangedListeners = new ArrayList<OnScrollChangedListener>();}//添加滚动事件监听public void AddOnScrollChangedListener(OnScrollChangedListener listener) {mChangedListeners.add(listener);}//移除滚动事件监听public void RemoveOnScrollChangedListener(OnScrollChangedListener listener) {mChangedListeners.remove(listener);}//回调public void NotifyOnScrollChanged(int l, int t, int oldl, int oldt) {if (mChangedListeners == null || mChangedListeners.size() == 0) {return;}for (int i = 0; i < mChangedListeners.size(); i++) {if (mChangedListeners.get(i) != null) {mChangedListeners.get(i).onScrollChanged(l, t, oldl, oldt);}}}}
  • 因为父布局是水平滚动 HorizontalScrollView,所以需要重写 onScrollChanged()方法,监听滑动变化。当观察者 mScrollViewObserver 不为 null 时,滑动监听通知回调观察者 ScrollViewObserver。
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {//滚动时通知if (mScrollViewObserver != null) {mScrollViewObserver.NotifyOnScrollChanged(l, t, oldl, oldt);}super.onScrollChanged(l, t, oldl, oldt);
}

以上水平滚动 HorizontalScrollView 基本上已经完成,上面预留外部访问接口:OnScrollChangedListener,在 Tab 栏水平滑动时,可以在 Adapter 中获取滚动水平、垂直滚动位置,来设置 item 中第二部分控件位置。

自定义view--仿照 体育app,股票,基金,电商,区块链APP 数据信息栏展示(还没写完)相关推荐

  1. 金融类自定义View(四)--股票蜡烛图以及MA、BOLL指标

    *本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 金融类自定义View(四)–股票蜡烛图(包含MA.BOLL指标)以及代码重构 前言 本文只描述蜡烛图单独的绘制逻辑,至于和分时图相 ...

  2. 潮流电商平台毒App正式改名了!

    [TechWeb]1月2日,潮流电商平台毒App于2020年1月1日启动品牌升级,正式更名为"得物App".据了解,新更名的得物App专注打造新一代潮流网购社区,不断扩充球鞋服装之 ...

  3. UI实用素材|电商购物类APP界面设计原则!

    移动端的一个特点是可探索性,而且体验感比较强.用户在用手点触.化动过程中就会触发动作,这些动作又会带来相应的反馈,如果在页面一些地方设计上惊喜的反馈方式,会给用户带来很多的乐趣,并且会鼓励用户进行很多 ...

  4. Axure移动端app抽奖转盘+电商圆盘抽奖+商品抽奖+年会抽奖+抽奖动态+Axure通用抽奖转盘组件原型+九宫格方形随机抽奖原型组件+运营活动抽奖转盘

    Axure移动端app抽奖转盘+电商圆盘抽奖+商品抽奖+年会抽奖+抽奖动态+Axure通用抽奖转盘组件原型+九宫格方形随机抽奖原型组件+运营活动抽奖转盘 原型演示及下载地址:https://www.p ...

  5. 跨境电商独立站App

    跨境电商独立站依赖的App应用程序功能 根据我们的经验,如果你的跨境电商App具备以下功能,客户就会更加依赖它: 出色的用户体验 下载App的客户希望无缝衔接他们的购物流程.你的跨境电商独立站App需 ...

  6. 【报告分享】2021年中国五大主流电商平台关于用户数据的最新规则汇总.pdf(附下载链接)...

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 大家好,我是文文(微信号:sscbg2020),今天给大家分享纷析智库和夸克网于2021年9月份联合发布的报告& ...

  7. 聚焦分布式资本:中国首家区块链基金如何布局区块链

    在目前阶段,与其定论区块链是一次生产关系革命,不如实事求是认清区块链仍处在初步实验阶段,各项基础设施仍未建成,具有良好体验的产品尚未出现.在接下来的一段时间,会有大批项目集中落地,这些一代项目的进展对 ...

  8. 聚焦分布式资本:中国首家区块链基金如何布局区块链?|链捕手

    在目前阶段,与其定论区块链是一次生产关系革命,不如实事求是认清区块链仍处在初步实验阶段,各项基础设施仍未建成,具有良好体验的产品尚未出现.在接下来的一段时间,会有大批项目集中落地,这些一代项目的进展对 ...

  9. 电商数据分析方法——搭建数据指标体系

    指标是量化衡量标准.衡量目标的单位或方法,例如对电商数据分析来说,最常见的指标就是UV和PV,而针对APP来说,最常见的就是DAU,MAU. 有了指标也就知道应该从哪些角度入手开始数据分析,数据驱动已 ...

最新文章

  1. Spring Boot下的Redis缓存实战
  2. [Pulgin] 利用swfupload实现java文件批量上传
  3. 学用MVC4做网站四:公共模型
  4. 使用webpack打包ES6代码
  5. git安装后找不见版本_结果发现git版本为1.7.4,(git --version)而官方提示必须是1.7.10及以后版本...
  6. 看板系统的表格动态数据显示
  7. 第一个smarty例子--分页显示数据
  8. wordpress 后台慢_WordPress网站优化加速的5个技巧
  9. 方法Method(Java)
  10. linux访问samba命令,smbclient命令
  11. Vs2010 上的配置Opencv2.2
  12. cmder 下载及安装
  13. 泰拉瑞亚手机版html,泰拉瑞亚1.2
  14. 累次积分怎么计算_【高等数学】二重积分化累次积分方法
  15. 微信小程序开发——单行文本溢出显示省略号
  16. hdu 5064——Find Sequence
  17. DBF文件实例分析(转)
  18. NAT在NDIS中间层驱动中的实现
  19. 如何选择数据拆分方法:不同数据拆分方法的优缺点及原因
  20. excel表格怎么调整行高和列宽_wps表格课程08|调整行高列宽

热门文章

  1. 【转载】java报表工具报表软件选型经验总结分享
  2. 网贷系统架构——前端框架的选择
  3. 服务器搭建微信编辑器,ueditor编辑器实现微信上传和图片服务器上传
  4. 中兴交换机配置telnet连接_交换机入门级别的基础配置,基础配置也非常重要,一分钟了解下...
  5. java bean lazy proxy_java – Hibernate @Proxy(lazy = false)注释做什么...
  6. 强大的多功能图片处理器微信小程序源码下载图片画框合成
  7. 麦芒6计算机记录,最简单易懂的HUAWEI 麦芒6实用小攻略
  8. 公众号助手后台怎么设置投票功能?
  9. Liquibase 常见问题解答
  10. 什么是职业生涯规划?