Android中ScrollView实现滑动距离监听器的方法
前言
众所周知ScrollView是我们经常使用的一个UI控件,也许你在使用ScrollView的过程中会发现,当你想监听ScrollView滑动的距离时却没有合适的监听器!当然在API23中有setOnScrollChangeListener(View.OnScrollChangeListenerl)可以使用,但是并不兼容低版本的API。那怎么办呢?只好重写ScrollView来实现对滑动距离的监听了。
话不多说,直接上代码:
publicclassMyScrollViewextendsScrollView{
privateOnScrollListenerlistener;
/**
*设置滑动距离监听器
*/
publicvoidsetOnScrollListener(OnScrollListenerlistener){
this.listener=listener;
}
publicMyScrollView(Contextcontext){
super(context);
}
publicMyScrollView(Contextcontext,AttributeSetattrs){
super(context,attrs);
}
publicMyScrollView(Contextcontext,AttributeSetattrs,intdefStyleAttr){
super(context,attrs,defStyleAttr);
}
//滑动距离监听器
publicinterfaceOnScrollListener{
/**
*在滑动的时候调用,scrollY为已滑动的距离
*/
voidonScroll(intscrollY);
}
@Override
publicvoidcomputeScroll(){
super.computeScroll();
if(listener!=null){
listener.onScroll(getScrollY());
}
}
}
上面重写的MyScrollView是在computeScroll()实现监听,因为ScrollView内部是通过Scroller来实现的,当滑动的时候会去调用computeScroll()方法,从而达到监听的效果。
当然还有另一种方法,就是在onScrollChanged(intl,intt,intoldl,intoldt)去监听,最后的效果是一样的:
publicclassMyScrollViewextendsScrollView{
privateOnScrollListenerlistener;
publicvoidsetOnScrollListener(OnScrollListenerlistener){
this.listener=listener;
}
publicMyScrollView(Contextcontext){
super(context);
}
publicMyScrollView(Contextcontext,AttributeSetattrs){
super(context,attrs);
}
publicMyScrollView(Contextcontext,AttributeSetattrs,intdefStyleAttr){
super(context,attrs,defStyleAttr);
}
publicinterfaceOnScrollListener{
voidonScroll(intscrollY);
}
@Override
protectedvoidonScrollChanged(intl,intt,intoldl,intoldt){
super.onScrollChanged(l,t,oldl,oldt);
if(listener!=null){
listener.onScroll(t);
}
}
}
总结
以上就是这篇文章的全部内容了,希望能对各位Android开发者们有所帮助,如果有疑问大家可以留言交流。
热门推荐
10 香港老妈结婚祝福语简短
11 毕业立体贺卡祝福语简短
12 简短新年年会祝福语
13 评论小品祝福语大全简短
14 恭喜师兄结婚祝福语简短
15 员工集体辞职祝福语简短
16 高中新生祝福语 简短
17 装修祝福语男生搞笑简短
18 生日开业蛋糕祝福语简短