onTouch事件

       公司最近需要开发安卓,没多少时间系统学习,安卓算是半路出家。

       昨天开发中遇到一个onTouch相关的问题,onTouch可以有两个参数,一个是View,一个是MotionEvent,View表示受到Touch事件的view对象,MotionEvent包含的事件的详细信息,例如触摸点的信息,触摸事件类型的信息等。MotionEvent有几个属性需要注意,分别如下:

             1.ACTION_DOWN:表示按下了屏幕,是第一个执行也是按下之后必然执行的方法。

              2.ACTION_MOVE:表示为移动手势,会不停的执行直到触摸结束。

              3.ACTION_UP :表示离开屏幕,触摸停止的时候执行。

              4.ACTION_CANCEL:表示取消手势,由系统产生的。

              总结:1个ACTION_DOWN+多个ACTION_MOVE+1个ACTION_UP=onTouch。

        onTouch方法返回的是一个boolean类型的值,该值如果为true,表示处理完成,不会传递给下一个对象,也就是说后面的控件或对象就不会接收到该触摸事件了。若返回值为false,则触摸事件对后面的控件或对象仍有效。

        昨天遇到的问题就是定义了一个全局变量,用来在某些地方控制某些环节,然后在onTouch方法中改变,代码:

onTouch事件_第1张图片

      可以看到buttontype是在onReceive中控制流程的,那么这样写就成了 onTouch(button=“smkw”)>onReceive(buttontype="smcp")>onTouch(button="smkw")

可以看到ontouch执行了两次,一次按下,一次松开,然后buttontype还是原来的,对后面的工作肯定有影响,改为:


onTouch事件_第2张图片

       分别在该手势的事件中处理,问题就解决了,当然,松开的手势中其实不必再处理的,但是为保险,还是写上了。

       可能问题很低级,但是还是记录一下,方便日后观看。

你可能感兴趣的:(onTouch事件)