zoukankan      html  css  js  c++  java
  • 下拉刷新ListView实现原理

    (1)主要是onScroll()方法和onTouchEvent()方法,先是onTouchEvent()的ACTION_DOWN,然后是 ACTION_MOVE和onScroll()方法同时进行,最后是onTouchEvent()的ACTION_UP。
         (2)刷新的4种状态:CLICK_TO_REFRESH(点击刷新状态,初始状态)、DROP_DOWN_TO_REFRESH(当刷新layout高 度低于一定范围时,为此状态)、RELEASE_TO_REFRESH(当刷新layout高度高于一定范围时,为此状态)、REFRESHING(刷新 中)
        (3)onTouchEvent函数:
                 ACTION_DOWN时:记录此时touch的点的y坐标,在下面调整高度时使用
                 ACTION_MOVE时:此时不断调整header的高度
                 ACTION_UP时:根据当前状态决定是进行刷新还是放弃刷新
          (4)onScrollStateChanged函数:
                  SCROLL_STATE_TOUCH_SCROLL:表示listview正在滚动中,并且手指没有离开屏幕
                  SCROLL_STATE_FLING:listview正在滚动中,且手指已经离开屏幕
                  SCROLL_STATE_IDLE:停止滚动
            (5)onScroll函数:根据listView的当前滚动状态即currentScrollState和当前刷新的状态不断修改header内容显示和刷新状态,如下:
                   ListView为SCROLL_STATE_TOUCH_SCROLL且刷新状态不为REFRESHING:
                         (a)刷新对应的item可见时,若刷新layout高度超出范围,则置刷新状态为RELEASE_TO_REFRESH;若刷新layout高度低于高度范围,则置刷新状态为DROP_DOWN_TO_REFRESH。

                         (b) 刷新对应的item不可见,重置header

                   ListView为SCROLL_STATE_FLING状态(松手滚动中)

                         (a) 若刷新对应的item可见并且刷新状态不为REFRESHING,设置position为1的(即第二个)item可见

                         (b) 若反弹回来,设置position为1的(即第二个)item可见

  • 相关阅读:
    XPOSED优秀模块列表 禁用输入法自动弹出
    XPOSED优秀模块列表 XLog
    XPOSED优秀模块列表 有自己的方向
    XPOSED优秀模块列表 WiFiPwd
    XPOSED优秀模块列表 宏/文本扩展
    XPOSED优秀模块列表 基本键盘记录器
    XPOSED优秀模块列表 屏幕过滤器
    XPOSED优秀模块列表 Play 商店修复
    XPOSED优秀模块列表 自动安装程序
    XPOSED优秀模块列表 屏幕关闭动画
  • 原文地址:https://www.cnblogs.com/feijian/p/4024866.html
Copyright © 2011-2022 走看看