android开发之横向滚动/竖向滚动的ListView(固定列头)

 更新时间:2013年01月18日 17:38:37   作者:  
由于项目需要,我们需要一个可以横向滚动的,又可以竖向滚动的 表格;经过几天的研究终于搞定,感兴趣的朋友可以了解下哦

由于项目需要,我们需要一个可以横向滚动的,又可以竖向滚动的 表格。而且又要考虑大数据量(行)的展示视图。经过几天的研究终于搞定,做了一个演示。贴图如下:

      

 好吧。让我们看思路是什么样的:

 

1. 上下滚动直接使用 listView来实现。

2. 左右滚动使用HorizontalScrollView,来处理滚动。我写一个类MyHScrollView继承 自它。

    2.1 . ListView里的每行(row)分为 两部分,不滚动的和可滚动的区域。比如本demo的第一列,就是静态的。而后面的所有列都是可以滚动的。

    2.2.  我不想自己计算滚动的距离,因为还要处理越界,坐标等等。于是我使用 OnTouch事件来处理。于是我们必须搞懂OnTouch的运行机制。了解 请google it.

    2.3.  列头 (显示列名的那一行)是固定的,不会上下滚动 。但可以左右滚动。而且它在左右滚动时,所有的 数据行(row) ,都要与其一起左右滚动。那么我们需要监听 列头             (控件)的滚动变化消息(事件),并将消息广播给所有的 数据行。这些数据行收到消息后,调整自己的滚动条位置以保持和 列头 的滚动距离一致。

3. 那么整个流程基本是这样的。 

    3.1, 捕获 列头(容器控件,包含固定和可滚动控件)的 onTouch事件(拖动事件),不处理。而分发给 “列头里的 可滚动部分的控件”,该控件是一个HorizontalScrollView的        子类,           当它收到这些 拖动事件时,就产生了固定的效果

    3.2. 捕获 数据行 区 的控件(该控件其实就是ListView控件 )的OnTouch事件,不处理,同样分发给  “列头里的 可滚动部分的控件”。 这两步,就完成了一个小效果,点击表      格的头部和体部都能移动(滚动)行。

    3.3.  我写了一个 HorizontalScrollView的子类,重载 onScrollChanged 方法,该方法在 滚动之后执行,相当于“滚动后的事件”,我写了一个观察者(设计模式)的类。每次       滚动后,都通知给 观察者。观察者再通知给它的订阅者(那些需要同时滚动的行里面的 滚动控件)。

    3.4.   当ListView创建行时,让这些行都订阅 上一步 的观察者。当 收到消息后,调整自身的滚动条位置以保持和 列头 的滚动条位置一致。

 代码比较多,就不贴了。提供代码下载。

源代码下载。 

相关文章

  • Android 使用 Path 实现搜索动态加载动画效果

    Android 使用 Path 实现搜索动态加载动画效果

    这篇文章主要介绍了Android 使用 Path 实现搜索动态加载动画效果,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2018-08-08
  • Android 通过网络图片路径查看图片实例详解

    Android 通过网络图片路径查看图片实例详解

    这篇文章主要介绍了Android 通过网络图片路径查看图片实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • 安卓逆向案例分析之蝉妈妈sign破解

    安卓逆向案例分析之蝉妈妈sign破解

    这篇文章主要为大家介绍了安卓逆向案例分析蝉妈妈sign破解的方式讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • 用原生VideoView进行全屏播放时的问题

    用原生VideoView进行全屏播放时的问题

    本篇文章主要介绍了用原生VideoView进行全屏播放时的问题,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • React Native中Android物理back键按两次返回键即退出应用

    React Native中Android物理back键按两次返回键即退出应用

    这篇文章主要给大家介绍了关于React Native中Android物理back键按两次返回键即退出应用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-10-10
  • RecyclerView+CardView实现横向卡片式滑动效果

    RecyclerView+CardView实现横向卡片式滑动效果

    这篇文章主要为大家详细介绍了RecyclerView+CardView实现横向卡片式滑动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • AOSP源码下载及问题小结

    AOSP源码下载及问题小结

    这篇文章主要介绍了AOSP源码下载,包括源码下载示例,文中给大家介绍了配置下载方法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Android自定义DataTimePicker日期时间选择器使用详解

    Android自定义DataTimePicker日期时间选择器使用详解

    这篇文章主要为大家详细介绍了Android自定义DataTimePicker日期时间选择器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • 教你如何搭建android源代码repo仓库

    教你如何搭建android源代码repo仓库

    这篇文章主要介绍了如何搭建android源代码repo仓库,如果你的开发是基于AOSP源码来建仓,那么搭建repo服务器和部署自己的repo仓库就是非常必要的工作了,本文给大家详细介绍搭建过程,感兴趣的朋友一起看看吧
    2022-07-07
  • 基于Rxjava实现轮询定时器

    基于Rxjava实现轮询定时器

    这篇文章主要为大家详细介绍了基于Rxjava实现轮询定时器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06

最新评论