Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中ScrollView實現滑動距離監聽器的方法

Android中ScrollView實現滑動距離監聽器的方法

編輯:關於Android編程

前言

眾所周知ScrollView是我們經常使用的一個UI控件,也許你在使用ScrollView的過程中會發現,當你想監聽ScrollView滑動的距離時卻沒有合適的監聽器!當然在API 23中有setOnScrollChangeListener(View.OnScrollChangeListener l)可以使用,但是並不兼容低版本的API。那怎麼辦呢?只好重寫ScrollView來實現對滑動距離的監聽了。

話不多說,直接上代碼:

public class MyScrollView extends ScrollView {

 private OnScrollListener listener;

 /**
 * 設置滑動距離監聽器
 */
 public void setOnScrollListener(OnScrollListener listener) {
  this.listener = listener;
 }

 public MyScrollView(Context context) {
  super(context);
 }

 public MyScrollView(Context context, AttributeSet attrs) {
  super(context, attrs);
 }

 public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
 }

 // 滑動距離監聽器
 public interface OnScrollListener{

 /**
 * 在滑動的時候調用,scrollY為已滑動的距離
 */
  void onScroll(int scrollY);
 }

 @Override
 public void computeScroll() {
  super.computeScroll();
  if(listener!=null){
   listener.onScroll(getScrollY());
  }
 }
}

上面重寫的MyScrollView是在computeScroll()實現監聽,因為ScrollView內部是通過Scroller來實現的,當滑動的時候會去調用computeScroll()方法,從而達到監聽的效果。

當然還有另一種方法,就是在onScrollChanged(int l, int t, int oldl, int oldt)去監聽,最後的效果是一樣的:

public class MyScrollView extends ScrollView {

 private OnScrollListener listener;

 public void setOnScrollListener(OnScrollListener listener) {
  this.listener = listener;
 }

 public MyScrollView(Context context) {
  super(context);
 }

 public MyScrollView(Context context, AttributeSet attrs) {
  super(context, attrs);
 }

 public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
 }

 public interface OnScrollListener{
  void onScroll(int scrollY);
 }

  @Override 
 protected void onScrollChanged(int l, int t, int oldl, int oldt) { 
  super.onScrollChanged(l, t, oldl, oldt); 
  if(listener != null){ 
   listener.onScroll(t); 
  } 
 } 
}

總結

以上就是這篇文章的全部內容了,希望能對各位Android開發者們有所幫助,如果有疑問大家可以留言交流。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved