zoukankan      html  css  js  c++  java
  • Android--判断listview上下滑动的方法

     1         elv_music_res_fragment.setOnScrollListener(new AbsListView.OnScrollListener() {
     2             private int mLastFirstPostion = 0;
     3             private int mLastFirstTop = 0;
     4             private int touchSlop = ViewConfiguration.get(getActivity()).getScaledTouchSlop();
     5 
     6             @Override
     7             public void onScrollStateChanged(AbsListView view, int scrollState) {
     8 
     9             }
    10 
    11             @Override
    12             public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    13                 int currentTop;
    14 
    15                 View firstChildView = absListView.getChildAt(0);
    16                 if (firstChildView != null) {
    17                     currentTop = absListView.getChildAt(0).getTop();
    18                 } else {
    19                     //ListView初始化的时候会回调onScroll方法,此时getChildAt(0)仍是为空的
    20                     return;
    21                 }
    22                 //判断上次可见的第一个位置和这次可见的第一个位置
    23                 if (firstVisibleItem != mLastFirstPostion) {
    24                     //不是同一个位置
    25                     if (firstVisibleItem > mLastFirstPostion) {
    26                         //
    27                         if (rg_container_resFragment.getVisibility() != View.GONE) {
    28                             rg_container_resFragment.setVisibility(View.GONE);
    29                         }
    30                     } else {
    31                         //
    32                         if (rg_container_resFragment.getVisibility() != View.VISIBLE) {
    33                             rg_container_resFragment.setVisibility(View.VISIBLE);
    34                         }
    35                     }
    36                     mLastFirstTop = currentTop;
    37                 } else {
    38                     //是同一个位置
    39                     if (Math.abs(currentTop - mLastFirstTop) > touchSlop) {
    40                         //避免动作执行太频繁或误触,加入touchSlop判断,具体值可进行调整
    41                         if (currentTop > mLastFirstTop) {
    42                             //
    43                             if (rg_container_resFragment.getVisibility() != View.VISIBLE) {
    44                                 rg_container_resFragment.setVisibility(View.VISIBLE);
    45                             }
    46                         } else if (currentTop < mLastFirstTop) {
    47                             //
    48                             if (rg_container_resFragment.getVisibility() != View.GONE) {
    49                                 rg_container_resFragment.setVisibility(View.GONE);
    50                             }
    51                         }
    52                         mLastFirstTop = currentTop;
    53                     }
    54                 }
    55                 mLastFirstPostion = firstVisibleItem;
    56             }
    57         });
  • 相关阅读:
    2019-9-10做题记录
    2019-9-9做题记录
    【HAOI2008】硬币购物
    【SCOI2010】生成字符串
    第18讲——ActiveX控件
    第20讲 HOOK和数据库编程
    第19讲——动态链接库
    2016-5-22 百度之星第三题--瞬间移动
    2016-4-25 完美世界-实习--小萌的包裹
    第3章 拍摄UFO——单一职责原则
  • 原文地址:https://www.cnblogs.com/819158327fan/p/6380836.html
Copyright © 2011-2022 走看看