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

 更新时间:2016年10月10日 14:15:04   投稿:daisy  
ScrollView相信对每位Android开发者们来说都不陌生,所以这篇文章给大家主要介绍了Android中ScrollView实现滑动距离监听器的方法,有需要的朋友们可以参考借鉴,下面来一起看看吧。

前言

众所周知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开发者们有所帮助,如果有疑问大家可以留言交流。

相关文章

  • android: targetSdkVersion升级中Only fullscreen activities can request orientation问题的解决方法

    android: targetSdkVersion升级中Only fullscreen activities can r

    这篇文章主要给大家介绍了关于Android target SDK和build tool版本升级中遇到Only fullscreen activities can request orientation问题的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-09-09
  • Android 五大布局方式详解

    Android 五大布局方式详解

    本文主要介绍Android 五大布局的知识资料,这里整理了详细的布局资料及实现示例代码,和实现效果图,有兴趣的小伙伴可以参考下
    2016-09-09
  • Android Studio打包 aar实现步骤示例详解

    Android Studio打包 aar实现步骤示例详解

    这篇文章主要为大家介绍了Android Studio打包aar步骤示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Android实现背景图片轮播

    Android实现背景图片轮播

    这篇文章主要为大家详细介绍了Android实现背景图片轮播,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • Android实现邮箱验证功能

    Android实现邮箱验证功能

    这篇文章主要为大家详细介绍了Android实现邮箱验证功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Android自定义View仿微博运动积分动画效果

    Android自定义View仿微博运动积分动画效果

    这篇文章主要为大家详细介绍了Android自定义View仿微博运动积分动画效果,开启了自定义view学习旅程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android编程实现ListView滚动提示等待框功能示例

    Android编程实现ListView滚动提示等待框功能示例

    这篇文章主要介绍了Android编程实现ListView滚动提示等待框功能,结合实例形式分析了Android ListView滚动事件相关实现技巧,需要的朋友可以参考下
    2017-02-02
  • Android StringBuffer的使用方法详解

    Android StringBuffer的使用方法详解

    StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类
    2017-07-07
  • Android编程之控件状态配置文件实例

    Android编程之控件状态配置文件实例

    这篇文章主要介绍了Android编程之控件状态配置文件,以实例形式分析了Android控件状态配置文件对于选中、获得焦点、按下时的状态等相关设置技巧,需要的朋友可以参考下
    2016-01-01
  • 详解App保活技术实现

    详解App保活技术实现

    随着Android阵营的各大手机厂商对于续航的高度重视,两三年前的手机发布会更是把反保活作为一个系统的卖点,不断提出了各种反保活的方案,导致现在想实现应用保活简直难于上青天,甚至都需要一个团队来专门研究这个事情。本文将详细介绍App保活技术实现,给大家一个参考
    2021-06-06

最新评论