我們需要監聽ScroView的滑動情況,比如滑動了多少距離,是否滑到佈局的頂部或者底部。可惜的是SDK並沒有相應的方法,不過倒是提供了一個 顯然這個方法是不能被外界調用的,因此就需要把它暴露出去,解決方式就是寫一個介面 然後重寫ScrollView類,給它提供上面寫的回調介面 佈局時,用重寫的這個S ...
我們需要監聽ScroView的滑動情況,比如滑動了多少距離,是否滑到佈局的頂部或者底部。可惜的是SDK並沒有相應的方法,不過倒是提供了一個
protected void onScrollChanged(int l, int t, int oldl, int oldt)
顯然這個方法是不能被外界調用的,因此就需要把它暴露出去,解決方式就是寫一個介面
/** * Created by 劉楠 on 2016/8/21 0021.17:24 */ public interface ScrollViewListener { void onScrollChanged(ObservableScrollView observableScrollView,int x,int y ,int oldx, int oldy); }
然後重寫ScrollView類,給它提供上面寫的回調介面
package com.liu.titlealpha.view; import android.content.Context; import android.util.AttributeSet; import android.widget.ScrollView; /** * Created by 劉楠 on 2016/8/21 0021.17:23 */ public class ObservableScrollView extends ScrollView { private ScrollViewListener mScrollViewListener=null; public void setScrollViewListener(ScrollViewListener scrollViewListener) { mScrollViewListener = scrollViewListener; } public ObservableScrollView(Context context) { super(context); } public ObservableScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public ObservableScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onScrollChanged(int x, int y, int oldx, int oldy) { super.onScrollChanged(x, y, oldx, oldy); if (mScrollViewListener != null) { mScrollViewListener.onScrollChanged(this, x, y, oldx, oldy); } } }
佈局時,用重寫的這個ScrollView