咱們須要監聽ScroView的滑動狀況,好比滑動了多少距離,是否滑到佈局的頂部或者底部。惋惜的是SDK並無相應的方法,不過卻是提供了一個 android
protected void onScrollChanged(int l, int t, int oldl, int oldt)
顯然這個方法是不能被外界調用的,所以就須要把它暴露出去,解決方式就是寫一個接口ide
/** * 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); } } }
佈局時,用重寫的這個ScrollViewthis