編輯:關於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開發者們有所幫助,如果有疑問大家可以留言交流。
我們公司最近開始使用GitHub 托管代碼,當然公司這種創建私有庫是要收費的,不同於個人上傳共享自己代碼,在這裡我就介紹下如何使用GitHub來進行團隊開發。首先加入你們
Android中的數據存儲主要有以下幾種方式: 1、使用SharedPreferences:該存儲方式主要用於應用程序有少量的數據需要保存,而且這些數據的格
Android下訪問網絡資源和一些注意事項 Android下異步消息處理線程技術 Android下異步消息處理線程技術的基本原理 模仿新聞客戶端小案例 GET方式提交數據
通常情況下,作為一個android開發者不會直接接觸到Binder,但Binder作為ipc機制最關鍵的一個環節,我們很有必要去了解他。其實在不知不覺中,大家肯定和Bin