Android中实现监听ScrollView滑动事件
2016-02-14 11:51
573 查看
这篇文章主要介绍了Android中实现监听ScrollView滑动事件,本文用重写ScrollView类的方法实现了一些扩展功能,需要的朋友可以参考下
有时候我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部。可惜的是SDK并没有相应的方法,不过倒是提供了一个
protected
void onScrollChanged(int x, int y, int oldx, int oldy)
方法,显然这个方法是不能被外界调用的,因此就需要把它暴露出去,方便使用。解决方式就是写一个接口,
public interface ScrollViewListener
{
void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy);
}
然后重写ScrollView类,给它提供上面写的回调接口。
public
class ObservableScrollView extends ScrollView {
private ScrollViewListener scrollViewListener = null;
public ObservableScrollView(Context context) {
super(context);
}
public ObservableScrollView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
public ObservableScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setScrollViewListener(ScrollViewListener scrollViewListener) {
this.scrollViewListener = scrollViewListener;
}
@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
super.onScrollChanged(x, y, oldx, oldy);
if (scrollViewListener != null) {
scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);
}
}
}
注意在xml布局的时候,不要写错了包。
在Activity中
implements
ScrollViewListener
setScrollViewListener(this);
重写onScrollChanged
有时候我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部。可惜的是SDK并没有相应的方法,不过倒是提供了一个
protected
void onScrollChanged(int x, int y, int oldx, int oldy)
方法,显然这个方法是不能被外界调用的,因此就需要把它暴露出去,方便使用。解决方式就是写一个接口,
public interface ScrollViewListener
{
void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy);
}
然后重写ScrollView类,给它提供上面写的回调接口。
public
class ObservableScrollView extends ScrollView {
private ScrollViewListener scrollViewListener = null;
public ObservableScrollView(Context context) {
super(context);
}
public ObservableScrollView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
public ObservableScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setScrollViewListener(ScrollViewListener scrollViewListener) {
this.scrollViewListener = scrollViewListener;
}
@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
super.onScrollChanged(x, y, oldx, oldy);
if (scrollViewListener != null) {
scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);
}
}
}
注意在xml布局的时候,不要写错了包。
在Activity中
implements
ScrollViewListener
setScrollViewListener(this);
重写onScrollChanged
相关文章推荐
- android开发中经常看到@Override是什么意思呢?
- android 资源
- Android getTopActivity的方法
- 访问者模式--Android源码设计模式笔记
- Android——Animator笔记:属性动画
- 阅读《Android 从入门到精通》(25)——标签切换
- Android权限
- Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现
- Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现
- Android多国语言文件夹命名
- Android百度地图自定义公交路线导航
- Android开发学习之路--UI之简单聊天界面
- Android事件传递机制【Touch事件】
- android Fragment(Android官方文档中文版)
- GitHub Android 最火开源项目Top20
- Android云测试
- Android--SoftReference缓存图片
- 根据ViewPager中图片的宽度,算出滚动条的宽度,并且在ViewPager上执行平移动画
- Android 计算当前使用内存百分比的方法
- Android 基本布局