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         });
  • 相关阅读:
    函数式编程
    javascript RegExp类型 学习小记
    javascript Date类型 学习笔记
    post 提交数据
    git学习笔记
    Winform DevExpress控件库(一) 使用SplashScreenManager控件定制程序加载页面
    .net 对json数据进行读取
    [WPF]TextTrimming截断后,ToolTip显示完整信息
    删除程序自身
    c/s项目记住账号密码功能
  • 原文地址:https://www.cnblogs.com/819158327fan/p/6380836.html
Copyright © 2011-2022 走看看