首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何并行处理ListView的scroll事件和我自己的OnTouch方法?

在Android开发中,ListView是常用的列表控件之一,而并行处理ListView的scroll事件和自定义的OnTouch方法可以通过以下步骤实现:

  1. 首先,为ListView设置一个OnScrollListener监听器,用于处理ListView的scroll事件。可以通过重写onScroll方法和onScrollStateChanged方法来实现对滚动事件的处理。
代码语言:java
复制
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        // 在滚动状态改变时执行相应操作
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        // 在滚动时执行相应操作
    }
});
  1. 其次,为ListView设置一个OnTouchListener监听器,用于处理自定义的触摸事件。可以通过重写onTouch方法来实现对触摸事件的处理。
代码语言:java
复制
listView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // 在触摸事件发生时执行相应操作
        return false;
    }
});
  1. 在处理滚动事件和触摸事件时,可以根据需要进行相应的逻辑处理。例如,可以在滚动事件中更新UI或加载更多数据,在触摸事件中处理手势操作或拖动操作。

需要注意的是,滚动事件和触摸事件是并行处理的,它们可以同时响应。如果需要在滚动事件中禁用触摸事件,可以在onScrollStateChanged方法中进行相应的处理。

关于ListView的scroll事件和自定义的OnTouch方法的更多详细信息,可以参考腾讯云的文档和示例代码:

请注意,以上提供的链接是腾讯云的相关文档,仅供参考。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

1、创建刷新控件

自定义ListView下拉刷新上拉加载更多   跳转 自定义RecyclerView下拉刷新上拉加载更多   跳转 Listview现在用很少了,基本都是使用Recycleview,但是不得不说Listview...具有划时代意义,拓展性很强,我们可以自己添加下拉刷新,上拉加载更多功能。...我们需要手指下拉去控制他缓慢显示,就用到了OnTouchListener,我们实现OnTouch方法做一些事件分发处理。...,move,up事件进行逻辑处理,当手指按在屏幕时会触发事件,一个down事件,0~无数次move事件,一个up事件,这里面着重对move事件处理,我们记录一下down事件Y,因为是上下拉动,没必要计算...然后diffY就是手指滑动距离,我们需要处理一下这个值,因为值太大,而且值是整数,会让我们下拉时候产生错乱,我们本意是让其从-100到0缓慢滑出(比如头部高度是100,从隐藏到显示就是-100到0)

53010

Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能

因此我也是放弃了在网上找现成代码想法,自己花功夫编写了一种非常简单下拉刷新实现方案,现在拿出来和大家分享一下。相信在阅读完本篇文章之后,大家都可以在自己项目中一分钟引入下拉刷新功能。...* 当ListView被触摸时调用,其中处理了各种下拉刷新具体逻辑。...之后每当手指在ListView上滑动时,onTouch方法就会执行。...在onTouch方法第一行就调用了setIsAbleToPull方法来判断ListView是否滚动到了最顶部,只有滚动到了最顶部才会执行后面的代码,否则就视为正常ListView滚动,不做任何处理...方法注册了一个监听器,当ListView正在刷新时就会回调监听器onRefresh方法,刷新具体逻辑就在这里处理

5.4K110

Android scrollview如何监听滑动状态

ScrollView 视图滚动过程,其实是在不断修改原点坐标。当手指触摸后,ScrollView会暂时拦截触摸事件,使用一个计时器。...假如在计时器到点后没有发生手指移动事件,那么ScrollView发送tracking events到被点击subView;若是在计时器到点后发生了移动事件,那么ScrollView取消tracking...自己促发滚动。...以下是我一个实现方案,通过CountDownTimer 来实现 在刚才onScrollChanged 接口中增加方法 public interface OnScrollChanged { void...} } }); //最后记得页面销毁时,cancel掉timer 总结 以上所述是小编给大家介绍Android scrollview如何监听滑动状态,希望对大家有所帮助,如果大家有任何疑问请给我留言

5.2K30

Android开发(14) 可以横向滚动ListView(固定列头)

我不想自己计算滚动距离,因为还要处理越界,坐标等等。于是我使用 OnTouch事件处理。于是我们必须搞懂OnTouch运行机制。了解 请google it. 2.3....那么我们需要监听 列头 (控件)滚动变化消息(事件),并将消息广播给所有的 数据行。这些数据行收到消息后,调整自己滚动条位置以保持和 列头 滚动距离一致。...那么整个流程基本是这样。 3.1, 捕获 列头(容器控件,包含固定和可滚动控件) onTouch事件(拖动事件),不处理。...捕获 数据行 区 控件(该控件其实就是ListView控件 )OnTouch事件,不处理,同样分发给 “列头里 可滚动部分控件”。...我写了一个 HorizontalScrollView子类,重载 onScrollChanged 方法,该方法在 滚动之后执行,相当于“滚动后事件”,我写了一个观察者(设计模式)类。

1.7K00

Android事件分发机制完全解析,带你从源码角度彻底理解(上)

也有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView引入了一个滑动菜单功能,ListView就不能滚动了?...1. onTouch和onTouchEvent有什么区别,又该如何使用?...如果你阅读了Android滑动框架完全解析,教你如何一分钟实现滑动菜单特效这篇文章,你应该会知道滑动菜单功能是通过给ListView注册了一个touch事件来实现。...如果你在onTouch方法处理完了滑动逻辑后返回true,那么ListView本身滚动事件就被屏蔽了,自然也就无法滑动(原理同前面例子中按钮不能点击),因此解决办法就是在onTouch方法里返回false...关注我技术公众号,每天都有优质技术文章推送。关注我娱乐公众号,工作、学习累了时候放松一下自己

44610

Android简洁下拉放大刷新效果示例

序言 国庆放假过后眼看一年又要过完了,年初指望着已经有一年经验本以为自己不是刚出校学生以为翅膀已经硬了,打算辞职换新工作,一面试才发现自己就是个垃圾,什么oninterceptEvent,dispatchTouchEvent...imageView和刷新refreshProgress(控件中为实现跟随手指滑动旋转因此使用为imageView) 2.获取到listview对象,然后监听listview滑动事件,判断滑到顶部后继续向下滑动时候将需要放大...ImageView高度增加然后利用ImageViewScale方法完成缩放。...3.最后放开手指时候用属性动画让imageView平滑回到最初状态,并且如果开启下拉刷新则回调其方法。...对象,因为listview属于子控件所以不能在构造方法里直接获取,因为此时控件不一定加载完成所以需要等待子控件加载完成后获取因此在onFinishInflate方法中获取 @Override protected

94920

Android:SwipeRefreshLayout和ViewPager滑动冲突原因和正确解决方式

SwipeRefreshLayout需要套在ScrollView和ListView时候才表现比较友好,在其他ViewGroup上有点问题,不知道为什么,到时候去看下源码。...二、目前网上流传解决方式 我网上找解决方法时候,发现无非都是两种方式。...1、监听ViewPagerOnTouch事件,滑动时候禁用swipeRefreshLayout mViewPager.setOnTouchListener(new View.OnTouchListener...我们去看看SwipeRefreshLayout源码。 先看dispatch方法,发现重写此方法。 然后看onIntercept方法,发现是在这里拦截了。那么onTouchEvent方法就不用看了。...这就是为什么往下滑动为什么总是不能将小球拉下来原因。 如果Y轴滑动距离大于这个mTouchSlop,那么事件就拦拦截了自己处理,小球就可以被拉下来了。这也是偶尔能将小球拉下来原因。

1.4K10

Android Heroes Reading Notes 2

canvas) { //在回调父类方法之前实现自己逻辑,对TextView来说就是在绘制文本之前 super.onDraw(canvas); //在回调父类方法之后实现自己逻辑...[后面有专门对Android事件拦截机制分析部分,此处略过] 第四章 ListView使用技巧 1.使用ViewHolder模式提高效率 这种方式是必须要用!...(index); (2)处理listview listview.setEmptyView(View) 4.动态修改listview 在使用adapternotifyDataSetChanged方法时...5.listview滑动监听 监听listview滑动事件方法有两种:一个是OnTouchListener来实现监听,另一个是使用OnScrollListener来实现监听。...itemid 第五章 Android Scroll分析 1.获取坐标值各种方法 图片来自Android中坐标系以及获取坐标的方法 ?

56610

Android事件分发机制完全解析,带你从源码角度彻底理解(上)

也有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView引入了一个滑动菜单功能,ListView就不能滚动了?...我们发现,onClick方法不再执行了!为什么会这样呢?你可以先理解成onTouch方法返回true就认为这个事件onTouch消费掉了,因而不会再继续向下传递。...第三个条件就比较关键了,mOnTouchListener.onTouch(this, event),其实也就是去回调控件注册touch事件onTouch方法。...参考着我们前面分析源码,首先在onTouch事件里返回了false,就一定会进入到onTouchEvent方法中,然后我们来看一下onTouchEvent方法细节。...1. onTouch和onTouchEvent有什么区别,又该如何使用?

1.2K60

Art of Android Development Reading Notes 3

《Android开发艺术探索》读书笔记 (3) 第3章 View事件体系 本节和《Android群英传》中第五章Scroll分析有关系,建议先阅读该章总结 第3章 View事件体系 3.1 View...若返回值为True,事件自己处理,后续事件序列让其处理; 若返回值为False,自己不消耗事件,向上返回让其他父容器onTouchEvent接受处理。...这时事件如何处理还要看onTouch返回值,如果返回false,那么当前viewonTouchEvent方法会被调用;如果返回true,那么onTouchEvent方法将不会被调用。...(5)某个view一旦开始处理事件,如果它不消耗ACTION_DOWN事件,那么同一事件序列其他事件都不会再交给它来处理,并且事件将重新交给它父容器去处理(调用父容器onTouchEvent方法)...事件除外,即当面对ACTION_DOWN事件时,ViewGroup总是会调用自己onInterceptTouchEvent方法来询问自己是否要拦截事件

42310

View事件源码解析

于是我们便知道,只要调用这个方法,他所有事件都将不会执行。...不过呢,我们发现ontouchListener里面有一个事件,如果return true的话那么他将直接消耗掉事件,这个是如何处理呢?我们去翻下源码,看看在哪边执行了这个方法。...如果设置了OnTouchListener,并且当前 View 可点击,就调用监听器 onTouch 方法, 如果 onTouch 方法返回值为 true,就设置 result 为 true。...3.如果他enable为false。那他将不执行任何事件,包括ontouch。 4.如果viewontouch消耗了事件,他不再执行任何点击事件。...5.对于click处理,如果想只执行longclick不执行click方法,只有选择不去监听click,至于为什么,我们前面分析过。

85960

Android 事件分发机制

用来进行事件分发和传递,返回true时候一定是自己去消费,返回false有可能是自己消费也有可能是传递给上一级OnTouchEvent方法, super就传递给其他view。...1.5 onTouchEvent 真正用来处理触摸事件最后调用方法, onTouchEvent是否拦截取决于down事件。...image.png 可以看到被拦截之后,后续move,up事件都交给自己处理,并且不再调用onIntercepetTouchEvent,而且事件也不再传递到子View 4.那如果我们不想让TextView...点击事件响应怎么办,按照上面的andorid事件分发流程图,方法多了,我们可以在不同阶段进行控制,不让事件向下分发,但我们试试onTouch()这个方法,此方法默认返回false,我们现在让它返回true...测试结果是可以,也就是说onTouch()方法返回true也是自己消费了,不会在向下传递到onTouchEvent()了,更不会传递到onClick()了,如图: ? image.png ?

1.5K21

由旋转画廊,看自定义RecyclerView.LayoutManager

先来看下如何简单使用RecyclerView RecyclerView listView = (RecyclerView)findViewById(R.id.lsit); listView.setLayoutManager...重写onLayoutChildren()方法 处理滑动事件(包括横向和竖向滚动、滑动结束、滑动到指定位置等) i.横向滚动:重写scrollHorizontallyBy()方法 ii.竖向滚动:重写...布局好后,对根据Item位置对Item进行缩放,中间最大,距离中间越远,Item越小。 第三步,处理滑动事件 i....处理横向滚动事件 由于旋转画廊只需横向滚动,所以这里只处理横向滚动事件 @Override public boolean canScrollHorizontally() { return true...()方法,可以监听到控件滚动状态,这里我们只需处理滑动停止事件

2.7K51

C#.NET 当我们在写事件 += 和 -= 时候,方法如何转换成事件处理

当我们在写 += 和 -= 事件时候,我们会在 += 或 -= 右边写上事件处理函数。我们可以写很多种不同事件处理函数形式,那么这些形式都是一样吗?如果你不注意,可能出现内存泄漏问题。...本文将讲解事件处理函数不同形式,理解了这些可以避免编写代码时候出现内存相关问题。...---- 典型事件处理函数 事件处理函数本质上是一个委托,比如 FileSystemWatcher Changed 事件是这样定义: 1 2 // 这是简化代码。...变种事件处理函数 除了上面直接创建目标类型委托之外,还有其他类型可以放到 += 右边: 1 2 // 方法组。...this.OnChanged -= 于是什么样 -= 才可以把 += 加进去事件处理函数减掉呢?

25630

Android高频面试专题 - 提升篇(三)事件分发机制

方法返回true就表示它要拦截当前事件,接着事件就会交给这个ViewGroup处理,即它onTouch方法就会被调用;如果这个ViewGrouponInterceptTouchEvent方法返回false...方法返回true,那么事件就会被onTouchListener.onTouch消费掉,而onClick是在onTouchEvent()ACTION_UP中处理,所以优先级是onTouchListener...onTouchEvent:方法返回值为true表示当前视图可以处理对应事件;返回值为false表示当前视图不处理这个事件,它会被传递给父视图onTouchEvent方法进行处理。...将本该自己处理事件通过onTouchEvent强行传递给其他View处理。...9、如何解决View事件冲突?举个开发中遇到例子? 常见开发中事件冲突有ScrollView与RecyclerView滑动冲突、RecyclerView内嵌同时滑动同一方向。

2.3K42

Android编程之ListView和EditText发布帖子隐藏软键盘功能详解

关于这些问题得查看相关具体代码如何实现可以参考,看似简单控件其实系统封装实现很复杂。这里告诫和我一样一路自学android开发者善于思考事件背后本质,共勉。...刚开始,我尝试了给listview设置clickListener,设置onScrollListener,重写它onTouchEvent方法,但是发现并不能达到自己满意效果(发现code有段时间了,自己都有种修改代码不修改自己满意为止不罢休纠结感...重新了最外层FrameLayoutonInterceptTouchEvent拦截touch方法。...so当一步步根据自己调试终于达到自己满意了。...其实Edit是个很高Edit,这种方法,会导致跟listview一样,edit在滑动时同时收起了keyboard导致重影,因为是adjustResize和布局原因。

1.1K20
领券