`
xiaozilong88
  • 浏览: 24132 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

setOnTouchEvent只能监听到ACTION_DOWN,监听不到ACTION_MOVE

 
阅读更多
今天在做自定义的可选文本的 TextView 类时,用到了 View 类的 setOnTouchListener(OnTouchListener l)事件监听,在构造 OnTouchListener 对象时需要重写 onTouch(...)方法,这个方法的返回值是布尔类型,

  刚开始我按默认给定的返回值 false运行,发现只能监听到这个 view 的“按下”事件,“移动”和“抬起”都不能够监听到;于是把返回值改为了 true,就都监听到了。

  但是随后又遇到了一个问题,那就是:点击其他组件后,再点击这个 view 的时候获取不到焦点!也就是click事件不响应了。我猜想一定是受到了 onTouch 方法的影响,查资料发现:

      设为true 和 false的效果是有区别的:

      setOnTouchListener 单独使用的时候返回值需要为true,这样才能保证移动的时候能后获取相应的监

      听,而非一次监听(即每次只有一个按下的事件)
      setOnTouchListener 和 setOnClickListener 同时使用时,onTouch 的返回值要设为 false,这样既可

      以保证按下移动抬起事件可以被监听,并且点击事件也会被监听。

于是,我又对这个 view 设置了setOnClickListener(虽然重写的方法体中什么也没写),并将onTouch 的返回值要设为 了false,结果就 既监听到了Touch 也能监听到 click 事件了,可以重获焦点了!
分享到:
评论

相关推荐

    Android中自定义ScrollView的滑动监听事件

    这个方法处理触摸事件,包括ACTION_DOWN、ACTION_MOVE、ACTION_UP等。通过分析这些事件,我们可以跟踪用户的滑动操作。 2. **滑动状态判断**: 在`onTouchEvent()`中,我们需要根据ACTION_DOWN、ACTION_MOVE和...

    应用源码之单点与多点触摸.zip

    在Android中,单点触摸通常涉及到ACTION_DOWN、ACTION_UP和ACTION_MOVE这三种触摸事件。ACTION_DOWN表示手指首次接触屏幕,ACTION_UP表示手指离开屏幕,ACTION_MOVE则在手指在屏幕上滑动时触发。开发者通常会在View...

    android 手势

    3.5 滚动(Scroll):适用于ListView、ScrollView等可滚动视图,通过监听ACTION_DOWN、ACTION_MOVE和ACTION_UP,以及ACTION_SCROLL事件,可以实现平滑的滚动效果。 四、进阶手势 4.1 Pinch to Zoom(捏合缩放):...

    Android Touch事件传递机制解析

    - **Up/Move事件**:如果ACTION_UP或ACTION_MOVE事件在某个子View内发生,该子View会首先接收到事件,即使ACTION_DOWN没有在此View上触发。 2. OnTouchEvent阶段: - **事件分发**:每个View都有一个OnTouchEvent...

    Android 触摸屏幕产生小气泡的效果应用源码.zip

    例如,气泡在ACTION_DOWN时从小到大渐变,ACTION_MOVE时沿着手指滑动,ACTION_UP时气泡慢慢消失。这可以通过改变气泡的透明度、大小和位置来实现,可以使用ValueAnimator或ObjectAnimator配合 interpolators 来控制...

    android 事件监听机制

    开发者可以创建一个自定义View,监听用户的触摸事件,根据ACTION_DOWN和ACTION_MOVE更新飞机的位置,ACTION_UP则作为停止移动的信号。同时,也可以使用动画库如PropertyAnimator来平滑地改变飞机的位置。 7. **事件...

    android触摸事件

    Android中的触摸事件主要由三个基本动作组成:ACTION_DOWN(按下)、ACTION_MOVE(移动)和ACTION_UP(释放)。当用户触碰屏幕时,系统会发送一个ACTION_DOWN事件,手指移动时会有ACTION_MOVE事件,手指离开屏幕时则...

    Android游戏开发之单点触摸与多点触摸的响应方式源码第

    总结来说,Android游戏开发中的单点触摸与多点触摸响应涉及到对MotionEvent的处理,包括ACTION_DOWN、ACTION_UP、ACTION_POINTER_DOWN、ACTION_POINTER_UP等动作类型。同时,手势识别、事件分发和性能优化也是提升...

    android安卓触摸屏幕感应位置获得位置信息和触摸点变色工程源码

    在接收到ACTION_DOWN或ACTION_MOVE事件时,获取到的坐标可以用于绘制一个矩形或者点,其颜色可以根据需求动态设置。例如,当手指按下时,可以将该点设为红色,抬起时恢复原色。 6. **感应屏幕**: 这个描述可能指的...

    Android图片缩放

    在onTouchEvent()方法中,我们需要监听ACTION_DOWN、ACTION_MOVE和ACTION_POINTER_DOWN事件。ACTION_DOWN记录起始位置,ACTION_MOVE处理图片的平移,ACTION_POINTER_DOWN和ACTION_POINTER_UP则用于计算缩放比例。 ...

    android 关于touch demo

    总结来说,Android中的`onTouch`事件处理涉及到ACTION_DOWN、ACTION_MOVE和ACTION_UP三个阶段,通过对Y坐标的比较,我们可以判断出用户的上下移动。在实际项目中,这样的功能可以应用于滑动菜单、滚动视图、滑动切换...

    Android 图片随手势放大缩小功能

    MotionEvent提供了对触摸屏幕时的多种动作的监听,如ACTION_DOWN(按下),ACTION_UP(抬起),ACTION_MOVE(移动)等。当用户进行双击或两个手指同时触摸屏幕时,我们需要监听并解析这些事件。 1. **单击退出**: ...

    通过scrollview响应父类的touch事件

    触摸事件在Android中由一系列的MotionEvent组成,包括ACTION_DOWN、ACTION_MOVE、ACTION_UP等。一个触摸事件的完整流程通常从ACTION_DOWN开始,然后是ACTION_MOVE(如果用户在屏幕上滑动)直至ACTION_UP结束。默认...

    Android游戏开发之单点触摸与多点触摸的响应方式源码

    对于单点触摸,我们通常关注ACTION_DOWN、ACTION_MOVE和ACTION_UP这三个动作。ACTION_DOWN表示手指首次接触屏幕,ACTION_MOVE表示手指在屏幕上移动,ACTION_UP则表示手指离开屏幕。在onTouchEvent()中,我们可以根据...

    InterceptTest

    以SwipeRefreshLayout(下拉刷新)和NestedScrollView(嵌套滚动)为例,当它们一起使用时,SwipeRefreshLayout会监听ACTION_DOWN事件,判断是否需要执行下拉刷新。如果不需要,它会通过`onInterceptTouchEvent`返回...

    Android多点触控技术实战,对图片进行缩放和移动Demo

    记录下第一次ACTION_DOWN时的X和Y坐标作为参照点,然后在ACTION_MOVE事件中,根据当前手指位置计算出相对于参照点的位移,将这个位移应用到图片的坐标上,实现图片的拖动效果。 在实现过程中,可能需要使用到`...

    多点触摸可缩放的TextView

    首先,要实现多点触摸功能,我们需要监听MotionEvent事件,特别是ACTION_DOWN、ACTION_MOVE和ACTION_UP这三种类型。ACTION_DOWN表示手指触摸屏幕,ACTION_MOVE表示手指移动,ACTION_UP表示手指离开屏幕。通过比较...

    Android应用源码之单点与多点触摸.zip

    单点触摸主要关注ACTION_DOWN, ACTION_UP和ACTION_MOVE事件,而多点触摸则需要处理多个触点,例如ACTION_POINTER_DOWN, ACTION_POINTER_UP和ACTION_MOVE。理解并熟练掌握这些事件处理机制,是开发具有丰富交互功能的...

    android Button监听事件的几种类型

    当用户与Button交互时,可以通过onTouch()方法获取ACTION_DOWN(按下)、ACTION_MOVE(移动)和ACTION_UP(释放)等事件。如果需要在按钮被触摸时执行特定操作,可以使用OnTouchListener: ```java myButton....

    DragButton

    接下来,我们要监听ACTION_MOVE事件。ACTION_MOVE事件在用户移动手指时频繁触发,我们利用这个事件更新按钮的位置。通过比较当前MotionEvent对象的坐标与ACTION_DOWN时的坐标差值,我们可以计算出按钮应该移动的距离...

Global site tag (gtag.js) - Google Analytics