遇到一个需求,在ScrollView中设置一个按钮,滑动的时候隐藏,滑动停止之后1秒再重新显示出来。

由于ScrollView没有提供直接的监听方法,所以要自定义一个ScrollView;实现思路:创建Handler,在ScrollView滑动的时候,先清空所有消息,然后发送延时消息,如果能接收到消息,说明滑动停止,下面是具体实现的代码

package app.view;import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.support.v4.widget.NestedScrollView;
import android.util.AttributeSet;/**Created by XiaoDaAn on 2020/04/02 */
public class ObservableScrollView extends NestedScrollView
{private OnScrollStatusListener onScrollStatusListener;public ObservableScrollView(Context context) {super(context);}public ObservableScrollView(Context context, AttributeSet attrs) {super(context, attrs);}public ObservableScrollView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Override protected void onScrollChanged(int l, int t, int oldl, int oldt) {super.onScrollChanged(l, t, oldl, oldt);if (onScrollStatusListener != null) {onScrollStatusListener.onScrolling();mHandler.removeCallbacksAndMessages(null);mHandler.sendEmptyMessageDelayed(0x01, 200);}}public void setOnScrollStatusListener(OnScrollStatusListener onScrollStatusListener) {this.onScrollStatusListener = onScrollStatusListener;}private Handler mHandler = new Handler() {@Override public void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 0x01:if (onScrollStatusListener != null) {onScrollStatusListener.onScrollStop();}break;}}};@Override protected void onDetachedFromWindow() {super.onDetachedFromWindow();mHandler.removeCallbacksAndMessages(null);}public interface OnScrollStatusListener {void onScrollStop();void onScrolling();}
}

在代码中调用:

@BindView(R.id.sv_cjf1)
ObservableScrollView sv_cjf1;//ScrollView滑动停止监听sv_cjf1.setOnScrollStatusListener(new ObservableScrollView.OnScrollStatusListener(){@Overridepublic void onScrollStop(){//滑动停止 1秒后显示按钮if(isHasPos !=1){    //后台返回数据  判断是否需要展示这个按钮Handler handler = new Handler();handler.postDelayed(new Runnable() {@Overridepublic void run() {iv_cj_guide.setVisibility(View.VISIBLE);}}, 1000);}}@Overridepublic void onScrolling(){//滑动中 隐藏按钮if(isHasPos!=1){ //后台返回数据  判断是否需要展示这个按钮iv_cj_guide.setVisibility(View.GONE);}}});

参考https://www.jianshu.com/p/208952db0205

ScrollView 滑动停止监听相关推荐

  1. Android中监听ScrollView滑动停止和滑动到底部

    1.监听ScrollView滑动停止: [java] view plaincopy /********************监听ScrollView滑动停止********************* ...

  2. Oracle每日一题——(1) 启动/停止监听

    启动监听:lsnrctl start 查看监听:lsnrctl status 停止监听:lsnrctl stop 启动监听:lsnrctl start [oracle@localhost ~]$ ls ...

  3. linux 下停止监听程序,Linux下启动Oracle服务和监听程序步骤

    Linux下启动Oracle服务和监听程序启动和关闭步骤整理如下: 1.安装oracle: 2.创建oracle系统用户: 3./home/oracle下面的.bash_profile添加几个环境变量 ...

  4. android 标题栏颜色渐变和阴影,ScrollView上下滑动监听,及判断scrollView是否滚动到底部

    1.创建  ScrollListener 接口监听滑动距离 public interface ScrollListener {void onScrollChanged(ScrollListenerVi ...

  5. android listview ontouchlistener,Android ListView监听滑动事件的方法(详解)

    ListView的主要有两种滑动事件监听方法,OnTouchListener和OnScrollListener 1.OnTouchListener OnTouchListener方法来自View中的监 ...

  6. linux如何登陆oracle?如何停止、启动oracle和其监听?

    目录 登陆 登陆指定用户 登陆dba 退出 停止数据库和监听 启动数据库和监听 登陆 登陆指定用户 sqlplus / as sysdba conn clearing/clearing 登陆dba s ...

  7. oracle 监听启动、停止、查看命令

    1.su oracle  然后启动监听器 1.lsnrctl start  会看到启动成功的界面; 1.lsnrctl stop  停止监听器命令. 1.lsnrctl status  查看监听器命令 ...

  8. 顶部布局随ScrollView滑动透明度渐变(QQ空间效果)

    QQ控件顶部的工具条在整体的ScrollView从顶部滑动时会从透明逐渐变为solid纯色:虽然有人实现过 ActionBar随ScorllView上下拖动而透明度渐变效果 以及 仿QQ空间滚动Act ...

  9. 用Python监听邻居家小姐姐的上网行为

    关注公众号:「Python专栏」,后台回复「小姐姐」,获取全套代码!!! 还记得曾经为了刷大话西游而下载了按键精灵,然后论坛上搜了各种分辨率的脚本么? 还记得春节为了刷回家的高铁票,自己写了按键精灵的 ...

  10. ScrollView滑动—仿微博主页标题栏渐变悬浮及Fragment实现多个内容页面切换

    作为一名热爱学习的Android开发工程si,刷微博的时候居然还想着技术呢,觉得自己也是够够了........哈哈哈 image.png 进入今天的正题,微博主页大家肯定是看过的,先看一下微博的效果. ...

最新文章

  1. 【1】用命令行搭建Vue项目
  2. 5G NGC — 关键技术 — MEC 边缘云
  3. Android异步下载网络图片(其三:ExecutorService)
  4. kafka手动调整分区副本数
  5. python循环引用是什么_细说Python的循环调用、循环引用和循环导入
  6. c#点击按钮调出另一个窗体_在类库或winform项目中打开另一个winform项目窗体的方法...
  7. iOS开发实战小知识点(四)
  8. jenkins教程_4 Docker+SpringCloud
  9. 汽车操作系统最新研究
  10. 硬件第一节 三级管电路工作原理及详解
  11. 弱网优化、网络抖动、网络延时,这些问题,怎么处理?
  12. PS制作简单可爱马赛克像素画效果
  13. 转:firefox os 框架解析
  14. 怎么建一个网站?新手建站教程
  15. 计算机组装配置(之电源选购)
  16. 苹果公司CEO:混蛋乔布斯
  17. 动态代理及JDK动态代理源码分析
  18. LumaQQ.NET使用的一些方法
  19. Numpy 怎么把arange ()产生的列表 变成一个行向量或者列向量
  20. Hadoop入门教程 详细的入门实战教程

热门文章

  1. Vue 3.0 Ref-sugar 提案到底是啥,真的是自寻死路吗?
  2. 商业智能系统具有的主要功能
  3. LTE附着流程详解-UECapabilityInformation
  4. 蓝桥杯 历年试题 矩阵翻硬币
  5. 高考录取查询显示内部服务器错误,为什么江苏成人高考成绩查询网页一直打不开...
  6. Selenium控制已打开的chrome、IE浏览器
  7. 多层陶瓷电容器用处_陶瓷电容器作用详解
  8. 小学听课计算机笔记范文,小学听课笔记 范文大全
  9. 下载好的IDEA双击打不开,解决方法
  10. ubuntu死机咋办_Ubuntu16.04死机解决方案