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