Android--判斷listview上下滑動的方法

來源:互聯網
上載者:User

標籤:動作   slist   scale   emc   touch   container   last   pre   cti   

 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             @Override12             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         });

 

Android--判斷listview上下滑動的方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.