监听ScrollView滑动方向
2015-04-02 15:44
393 查看
我们经常看到向上滑动列表的时候app的标题栏隐藏,向下滑动的时候标题栏又再次出现。这种效果我们怎么实现?
其实android的View类里面有一个方法
通过查询资料发现可以重写这个方法来监听列表的滑动方向。
下面我给出我针对ScrollView实现的监听类。
/**
* 可以监听ScrollView的上下滑动 ,实现ScrollListener接口,调用setScrollListener(ScrollListener l)方法。
* SCROLL_UP :ScrollView正在向上滑动
* SCROLL_DOWN :ScrollView正在向下滑动
* @author xm
*/
public class ObservableScrollView extends ScrollView {
private ScrollListener mListener;
public static interface ScrollListener {
public void scrollOritention(int oritention);
}
/**
* ScrollView正在向上滑动
*/
public static final int SCROLL_UP = 0x01;
/**
* ScrollView正在向下滑动
*/
public static final int SCROLL_DOWN = 0x10;
/**
* 最小的滑动距离
*/
private static final int SCROLLLIMIT = 40;
public ObservableScrollView(Context context) {
super(context, null);
}
public ObservableScrollView(Context context, AttributeSet attrs) {
super(context, attrs, 0);
}
public ObservableScrollView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (oldt > t && oldt - t > SCROLLLIMIT) {// 向下
if (mListener != null)
mListener.scrollOritention(SCROLL_DOWN);
} else if (oldt < t && t - oldt > SCROLLLIMIT) {// 向上
if (mListener != null)
mListener.scrollOritention(SCROLL_UP);
}
}
public void setScrollListener(ScrollListener l) {
this.mListener = l;
}
}
我们可以实现ScrollListener来实现滑动时的操作。
其实android的View类里面有一个方法
protected void onScrollChanged(int l, intt, int oldl, int oldt)
通过查询资料发现可以重写这个方法来监听列表的滑动方向。
下面我给出我针对ScrollView实现的监听类。
/**
* 可以监听ScrollView的上下滑动 ,实现ScrollListener接口,调用setScrollListener(ScrollListener l)方法。
* SCROLL_UP :ScrollView正在向上滑动
* SCROLL_DOWN :ScrollView正在向下滑动
* @author xm
*/
public class ObservableScrollView extends ScrollView {
private ScrollListener mListener;
public static interface ScrollListener {
public void scrollOritention(int oritention);
}
/**
* ScrollView正在向上滑动
*/
public static final int SCROLL_UP = 0x01;
/**
* ScrollView正在向下滑动
*/
public static final int SCROLL_DOWN = 0x10;
/**
* 最小的滑动距离
*/
private static final int SCROLLLIMIT = 40;
public ObservableScrollView(Context context) {
super(context, null);
}
public ObservableScrollView(Context context, AttributeSet attrs) {
super(context, attrs, 0);
}
public ObservableScrollView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (oldt > t && oldt - t > SCROLLLIMIT) {// 向下
if (mListener != null)
mListener.scrollOritention(SCROLL_DOWN);
} else if (oldt < t && t - oldt > SCROLLLIMIT) {// 向上
if (mListener != null)
mListener.scrollOritention(SCROLL_UP);
}
}
public void setScrollListener(ScrollListener l) {
this.mListener = l;
}
}
我们可以实现ScrollListener来实现滑动时的操作。
相关文章推荐
- 从源码出发:ScrollView实现以惯性滑动的形式滑动到任意位置/禁止惯性滑动/监听惯性滑动
- ScrollView滑动监听
- ScrollView的滑动监听(以HorizontalScrollView为例)
- 监听ScrollView上下滑动
- Android 监听ScrollView的滑动
- 利用监听事件做一个判断是在x方向还有y方向上面的判断,判断在屏幕上滑动的趋势
- ScrollView监听滑动到底部、顶部
- ScrollView滑动监听实现界面动画效果
- android手势滑动方向监听
- ScrollView滑动的监听
- [置顶] Android ScrollView监听滑动到顶部和底部的两种方式(你可能不知道的细节)
- Android ScrollView监听滑动到顶部和底部的两种方式
- scrollview 单方向滑动
- ScrollView滑动监听显示标题栏
- 监听ScrollView 的上下滑动
- Android中实现监听ScrollView滑动事件
- Android中自定义ScrollView的滑动监听事件
- ScrollView的滑动监听
- Android中实现监听ScrollView滑动事件
- 重写ScrollView 实现滑动监听(top栏透明度渐变)