触摸事件类MotionEvent的一些小细节

原创 2015年11月18日 22:58:24

     最近在做一个小工具,用到了触摸类MotionEvent的action_DOWN,action_UP的东西,这中间有些小细节感觉跟上篇文章:                 http://blog.csdn.net/rainbowchou/article/details/49885511  有些关联,这个问题在stack overflow得到解决,同时这个问题的解决,也算是获得一个技巧了,自己记录学习一下。比较晚了,明天才开始写正题.

      一拖拖了好几天,好烦。

     这个小细节主要是来自我需要的一个需求,我需要在一个ImageView的Touch事件中实现这么一个逻辑:

     首先ImageView默认是有一张图片的,然后在触摸的时候我希望能够在改变ImageView显示图片的同时,希望能够执行一个触摸事件。

   听起来真的是非常简单的,不就是在action_DOWN,action_UP中处理一下事件,然后在点击事件中处理逻辑事件不就好了嘛?然而,但我这么做的时候,发现action_DOWN部分的逻辑可以处理,但是点击的部分却是没有执行这部分代码,这时候我就想到Android的事件拦截机制了,在这里OnTouch事件中最后是返回了false,那么这其中应该事件继续向下传递,可以执行点击事件的代码啊。

   然后就去Stack OverFlow搜索,真是个好网站,什么稀奇古怪的问题都有,恰好就有我的问题:

     当然需求不是一模一样的,在我总结之后,我的解决方案是这样的:

    

      在action_DOWN中就进行了返回true的处理,这么处理的话,说明事件已经在这消费掉了,那肯定是不能在点击事件中写逻辑了,把逻辑移动到

    action_UP中进行处理,这里最重要的一个点就是在action_DOWN中返回的那个true,如果这里没有返回true,那么action_UP中的逻辑也是没有办法进行处理的。这一点其实也不难理解:

   因为如果在action_DOWN中没有返回true的话,那么这里的事件继续传递了,那么就不会去执行接下来另一个action_UP的逻辑了,返回true那么就完成这个事件,那就可以继续接收另一个事件了。

   利用这种方法,虽然我们不能够去处理点击事件的逻辑,因为事件压根就没有传递到点击事件(onclick())中,但是在他之前的OnTouch就完成了。

  之前说过,Android这个触摸事件机制是可以层层嵌套的,那么我们可以决定在哪一层进行事件的回收以及相关操作了。

  



   Ps:我发现这个编辑器不太好用,csdn有个MarkDown编辑器,之前大概看了下官方给的教程,还挺容易的,希望自己下次的文章能够使用MrakDown来进行。

            写博客是为了希望自己能更好的学习,最近又懒了,不可取,再接再厉吧。

版权声明:本文为博主原创文章,未经博主允许不得转载。

关于Java编程的一些小知识

Q:   int n=Integer.parseInt("+5");          int n=Integer.parseInt("123ABC");         编译时正常,解析时就报错了,...
  • NBXX2005
  • NBXX2005
  • 2005年01月13日 23:24
  • 563

安卓触屏事件--对象,监听器,属性,行为,多点触摸,MoMotionEvent常用方法

1.触屏事件对象 是通过MotionEvent 对象进行封装的,常用的事件类型是定义在MotionEvent 中的常量。我们通过getActionMasked() 方法。 科普: getAct...
  • zfireear
  • zfireear
  • 2016年03月23日 11:53
  • 1540

Input事件输入系统之应用MotionEvent触摸事件处理流程

Input事件输入系统之应用MotionEvent触摸事件处理流程         输入事件一般分为KeyEvent按键事件,和MotionEvent触摸事件,也就是我们平时说的touch...
  • xiaomingheni
  • xiaomingheni
  • 2017年03月17日 14:50
  • 494

Android 笔记 motionEvent 处理触摸事件

定义触摸事件在处理触摸事件的时候,主要有两种启动方式 1,view.setOnTouchListener() 2,在自定义view/activity的时候覆盖一个方法onTouchEvent() ...
  • super_zq
  • super_zq
  • 2016年10月07日 12:57
  • 339

android MotionEvent的相关的类的介绍

常见的类的介绍      1 MotionEvent  触摸事件      2 View  视图的位置信息      3 ViewConfiguration  View相关设置      4 ...
  • zhi184816
  • zhi184816
  • 2015年11月05日 23:10
  • 966

OnTouchListener()的onTouch(View v, MotionEvent event)事件以及按键onKeyDown()事件

以前没有太在意 touch(事件)返回值,今天写onTouch事件让控件随着手指移动时,发现 只执行了MotionEvent.ACTION_DOWN , MOVE和UP事件都没有执行,辗转反侧,发现是...
  • cai784921129
  • cai784921129
  • 2016年11月23日 10:42
  • 441

触摸事件分发机制总结

从手指触摸到设备屏幕,直至手指离开设备屏幕,这个过程会不断的产生触摸事件,Framework称之为MotionEvent。 分发机制这是用于解决View的嵌套、重叠所产生的触摸事件应该由哪个view...
  • fyplant12
  • fyplant12
  • 2015年08月04日 14:53
  • 638

关于.net类的一些小细节

首先请阅读下面的代码: public abstract class AClass    {        public AClass()        {        }        public...
  • bugsbuddy
  • bugsbuddy
  • 2006年12月08日 15:54
  • 465

java的一些小程序例子--3

输入两个实数,按照从小到大的顺序输出这两个数 import java.util.Scanner;   public class b{  public static void main(Strin...
  • qq_24928451
  • qq_24928451
  • 2015年03月20日 18:38
  • 290

MotionEvent的事件类型和触控点索引的理解

首先,仔细阅读了这篇文章,原文如下:   MotionEvent事件对象 一般我们是在View的onTouchEvent方法中处理MotionEvent对象的.   ...
  • anhenzhufeng
  • anhenzhufeng
  • 2015年12月30日 14:39
  • 1062
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:触摸事件类MotionEvent的一些小细节
举报原因:
原因补充:

(最多只允许输入30个字)