`
wangleyiang
  • 浏览: 220773 次
社区版块
存档分类
最新评论

Android View的onTouch和onClick和onLongClick事件

阅读更多

Android系统有自己的事件处理逻辑,而应用开发大部分是在系统逻辑中添加Application逻辑。本文简要说明onTouch,onClick,onLongClick事件关系。

 

先看这三个事件的处理函数:

  1. public boolean onTouch(View v, MotionEvent event);
  2. public boolean onLongClick(View v);
  3. public void onClick(View v);

看到三个函数的返回值,只有onClick是void,而onTouch和onLongClick是boolean,原因是系统对这些事件的处理是有条件,必须满足条件才会触发相应的事件处理函数。

 

如果在onTouch和onLongClick都返回false并且长按View时,可以看到三个事件处理函数都会被调用,而且顺序有一定关系。代码如下:

	@Override
	public boolean onTouch(View v, MotionEvent event) {
		Toast.makeText(this, "TOUCH", Toast.LENGTH_SHORT).show();
		return false;

	}

	@Override
	public void onClick(View v) {
		Toast.makeText(this, "CLICK", Toast.LENGTH_SHORT).show();
	}

	@Override
	public boolean onLongClick(View v) {
		Toast.makeText(this, "LONG CLICK", Toast.LENGTH_SHORT).show();
		return false;
	}

 

事件在事件链中进行传递,如果一级没有处理,将向下一级传递,直到传遍整个事件链。

onTouch如果返回true,则表明对该事件做了处理,不会继续传递该事件在事件链中;onLongClick如果返回true,则表名对该事件做了处理,不会继续传递该事件在事件链中。

 

为了避免希望被响应的事件没有得到响应,需要对某些事件处理函数中控制事件是否继续传递。具体做法根据不同要求而有差别,在此不做说明了。

 

 

 

分享到:
评论

相关推荐

    android view OnTouchEvent 中同时处理 onClick,onLongClick,和左右移动事件

    `OnTouchEvent`是`View`接收触摸输入的主要方法,而`onClick`、`onLongClick`和左右移动事件则是在用户与界面交互时的常见操作。下面将详细介绍如何在`OnTouchEvent`中有效地处理这些事件。 首先,`onClick`事件...

    详谈Android中onTouch与onClick事件的关系(必看)

    在Android开发中,触摸事件处理是用户界面交互的关键部分,主要涉及到`onTouch`和`onClick`两个重要的事件监听器。这两个事件在处理用户点击行为时有着密切的关系,但它们的触发顺序和处理机制有所不同。 首先,...

    android click 和onTouch 事件处理机制.

    在同一个`View`中,如果同时覆盖了`onClick`、`onLongClick`和`onTouchEvent`,那么事件的处理顺序是这样的:`onTouchEvent`首先接收到`ACTION_DOWN`,然后可能会启动检查长按的定时器;当`ACTION_UP`到来时,如果...

    详细分析Android中onTouch事件传递机制

    此外,`onTouchEvent`还与`onClick`和`onLongClick`等其他事件处理方法有所关联。`onClick`通常用于点击事件,而`onLongClick`则用于长按事件。尽管它们的触发方式不同,但它们都依赖于`onTouchEvent`来检测用户的...

    android Button监听事件的几种类型

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

    Android、教程<经典> 6 Android事件处理

    例如,Android Jetpack中的`ViewBinding`简化了视图引用,`MotionEvent`提供了更精细的触摸事件处理,以及`ActivityResultContract`改进了启动其他Activity并处理结果的方式。不断学习和掌握这些新特性,能帮助...

    Android ListView的单击和长按时,避免同时执行

    在`onTouch()`方法中,我们可以检测ACTION_DOWN(手指按下)和ACTION_UP(手指抬起)事件,根据触摸事件的持续时间来判断是单击还是长按。这种方法更灵活,但实现起来也相对复杂。 4. **使用第三方库**:市面上也有...

    android面试题集锦(珍藏)

    ### Android事件分发机制详解 #### 一、事件分发机制概述 在Android开发中,事件分发机制是非常重要的一个概念。理解这一机制有助于开发者更好地处理用户交互,并且能够优化应用性能。本节将深入探讨Android事件...

    Android UI事件处理

    在Android中,`View` 类提供了一个接口,即事件监听器(Event Listener),用于处理各种类型的用户输入事件。这些监听器通常以接口的形式存在,当特定的用户交互发生时,系统会自动调用这些接口中的方法。以下是一些...

    android面试题目整理

    如果设置了`onLongClickListener`或`OnClickListener`,相应的`onLongClick`和`onClick`方法将在合适的时机被调用。 事件分发机制还有一些特殊情况。例如,如果事件传递到最底层的View,但`onTouchEvent`返回false...

    RecyclerView的长按事件和点击事件

    public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // 记录按下位置 break; case MotionEvent.ACTION_UP: // 如果按下和抬起位置相同,且...

    Android UI开发专题(一) 之界面设计

    5. `View.OnTouchListener`:`onTouch()`方法处理触摸事件,包括按下、移动和抬起等,提供了对复杂手势的支持。 6. `View.OnCreateContextMenuListener`:`onCreateContextMenu()`用于创建上下文菜单,当用户长按时...

    A0505事件处理Event1

    - `onTouch()`:在`View.OnTouchListener`中,处理触摸事件,接收`MotionEvent`对象,包含了触摸事件的详细信息,返回值用于控制事件流。 1.2 功能演示 以下代码展示了如何为一个TextView设置点击、长按和触摸事件...

    android面试

    ### Android面试知识点详解:事件分发机制 #### 一、事件分发机制概述 在Android开发过程中,事件分发机制是非常重要的一部分。了解这一机制有助于开发者更好地控制UI交互逻辑,提高用户体验。 **事件分发机制...

    android基本UI的控制和响应

    在Android开发中,界面是由多个组件构成的,这些组件主要包括Activity和View。 - **Activity**: Activity是Android四大组件之一,它代表了一个屏幕界面。每一个Activity都可以看作是一个独立的窗口,负责展示用户...

    android开发--手势行为

    public boolean onTouch(View v, MotionEvent event) { return gestureDetector.onTouchEvent(event); } }); ``` 二、滑动手势 1. 滑动(Swipe):滑动手势包括向左滑、向右滑、向上滑和向下滑。`...

    新版Android开发教程 笔记10--基础UI编程4

    最后,我们还将探讨触摸事件的处理,包括onClick、onTouch和onLongClick等监听器。这些监听器使得开发者能够根据用户的触摸行为执行相应的动作,如点击按钮、滑动列表等。 总之,Android的基础UI编程涵盖了布局设计...

    butterknife-view注入工具.zip

    3. **事件监听**:使用 `@OnClick`, `@OnLongClick`, `@OnItemClick`, `@OnItemSelected`, `@OnTouch`, `@OnFocusChange`, 和 `@OnTextChanged` 等注解,可以直接在视图上声明事件监听器。 4. **可选绑定**:`@...

    简单讲解Android开发中触摸和点击事件的相关编程方法

    5. `View.OnTouchListener`: 包含`onTouch()`方法,处理触摸事件,如按下、滑动和释放等手势。 通过实现这些接口,并将实现的实例注册到视图对象上,开发者可以轻松地为不同类型的交互添加响应。例如,如果想要监听...

Global site tag (gtag.js) - Google Analytics