当前位置: 移动技术网 > IT编程>移动开发>Android > Android中ScrollView实现滑动距离监听器的方法

Android中ScrollView实现滑动距离监听器的方法

2019年07月24日  | 移动技术网IT编程  | 我要评论

dj群星,黄金渔场20120711,聊城人事考试网

前言

众所周知scrollview是我们经常使用的一个ui控件,也许你在使用scrollview的过程中会发现,当你想监听scrollview滑动的距离时却没有合适的监听器!当然在api 23中有setonscrollchangelistener(view.onscrollchangelistener l)可以使用,但是并不兼容低版本的api。那怎么办呢?只好重写scrollview来实现对滑动距离的监听了。

话不多说,直接上代码:

public class myscrollview extends scrollview {

 private onscrolllistener listener;

 /**
 * 设置滑动距离监听器
 */
 public void setonscrolllistener(onscrolllistener listener) {
  this.listener = listener;
 }

 public myscrollview(context context) {
  super(context);
 }

 public myscrollview(context context, attributeset attrs) {
  super(context, attrs);
 }

 public myscrollview(context context, attributeset attrs, int defstyleattr) {
  super(context, attrs, defstyleattr);
 }

 // 滑动距离监听器
 public interface onscrolllistener{

 /**
 * 在滑动的时候调用,scrolly为已滑动的距离
 */
  void onscroll(int scrolly);
 }

 @override
 public void computescroll() {
  super.computescroll();
  if(listener!=null){
   listener.onscroll(getscrolly());
  }
 }
}

上面重写的myscrollview是在computescroll()实现监听,因为scrollview内部是通过scroller来实现的,当滑动的时候会去调用computescroll()方法,从而达到监听的效果。

当然还有另一种方法,就是在onscrollchanged(int l, int t, int oldl, int oldt)去监听,最后的效果是一样的:

public class myscrollview extends scrollview {

 private onscrolllistener listener;

 public void setonscrolllistener(onscrolllistener listener) {
  this.listener = listener;
 }

 public myscrollview(context context) {
  super(context);
 }

 public myscrollview(context context, attributeset attrs) {
  super(context, attrs);
 }

 public myscrollview(context context, attributeset attrs, int defstyleattr) {
  super(context, attrs, defstyleattr);
 }

 public interface onscrolllistener{
  void onscroll(int scrolly);
 }

  @override 
 protected void onscrollchanged(int l, int t, int oldl, int oldt) { 
  super.onscrollchanged(l, t, oldl, oldt); 
  if(listener != null){ 
   listener.onscroll(t); 
  } 
 } 
}

总结

以上就是这篇文章的全部内容了,希望能对各位android开发者们有所帮助,如果有疑问大家可以留言交流。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网