1.SimpleOnGestureListener

遇到的问题:

自己定义一个按钮继承自Button,一开始改变按钮颜色的操作放在onTouchEvent的ATION_DOWN里触发。

这时问题来了,放在ScrollView里面,发现如果碰到按钮去滑动时,会触发按钮改变颜色,显然这是不对的。

后来查了一下,发现了SimpleOnGestureListener

重写了onDown事件和onSingleTapUp事件,代码如下

private SimpleOnGestureListener mSimpleOnGestureListener = new SimpleOnGestureListener(){
@Override
public boolean onSingleTapUp(MotionEvent e) {
//改变颜色只在点击的时候,如果在onDown里的话,滑动也会改变颜色
setChecked(!mIsChecked);
return true;
}
@Override
public boolean onDown(MotionEvent e) {
//这里返回true才会调用onSingleTapUp
return true;
}
};

在自定义Button里重写onTouchEvent即可

@Override
public boolean onTouchEvent(MotionEvent event) {
  return mGestureDetector.onTouchEvent(event);
}

QUOTE

1. 点击屏幕上的某项的执行流程  有两种情况,一种是时间很短,一种时间稍长

时间很短:onDown--------》onSingleTapUp--------》onSingleTapConfirmed

时间稍长:onDown--------》onShowPress------》onSingleTapUp--------》onSingleTapConfirmed

2. 长按事件

onDown--------》onShowPress------》onLongPress

3.抛:手指触动屏幕后,稍微滑动后立即松开

onDown-----》onScroll----》onScroll----》onScroll----》………----->onFling

4.拖动

onDown------》onScroll----》onScroll------》onFiling

注意:有的时候会触发onFiling,但是有的时候不会触发,个人理解是人的动作不标准所致。

android事件分发笔记的更多相关文章

  1. Android事件分发机制详解(2)----分析ViewGruop的事件分发

    首先,我们需要 知道什么是ViewGroup,它和普通的View有什么区别? ViewGroup就是一组View的集合,它包含很多子View和ViewGroup,是Android 所有布局的父类或间接 ...

  2. Android事件分发机制浅谈(一)

    ---恢复内容开始--- 一.是什么 我们首先要了解什么是事件分发,通俗的讲就是,当一个触摸事件发生的时候,从一个窗口到一个视图,再到一个视图,直至被消费的过程. 二.做什么 在深入学习android ...

  3. 通俗理解Android事件分发与消费机制

    深入:Android Touch事件传递机制全面解析(从WMS到View树) 通俗理解Android事件分发与消费机制 说起Android滑动冲突,是个很常见的场景,比如SliddingMenu与Li ...

  4. Android事件分发机制(下)

    这篇文章继续讨论Android事件分发机制,首先我们来探讨一下,什么是ViewGroup?它和普通的View有什么区别? 顾名思义,ViewGroup就是一组View的集合,它包含很多的子View和子 ...

  5. Android事件分发机制(上)

    Android事件分发机制这个问题不止一个人问过我,每次我的回答都显得模拟两可,是因为自己一直对这个没有很好的理解,趁现在比较闲对这个做一点总结 举个例子: 你当前有一个非常简单的项目,只有一个Act ...

  6. android事件分发机制

    android事件分发机制,给控件设置ontouch监听事件,当ontouch返回true时,他就不会走onTouchEvent方法,要想走onTouchEvent方法只需要返回ontouch返回fa ...

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

    Android事件分发机制 该篇文章出处:http://blog.csdn.net/guolin_blog/article/details/9097463 其实我一直准备写一篇关于Android事件分 ...

  8. android事件分发介绍

        Android事件分发 事件分发3个步骤 dispatchTouchEvent(event)派发 onInterceptTouchEvent(event)拦截 onTouchEvent(eve ...

  9. Android事件分发理解

    Android事件分发机制是个难点和重点,结合下各家,写点自己的理解.. 首先抛出一个小问题,写一个button的点击事件 button.setOnClickListener(new OnClickL ...

随机推荐

  1. 5.查找最小的k个元素(数组)

    题目: 输入n个整数,输出其中最小的k个,例如输入1,2,3,4,5,6,7,8这8个数,则最小的4个是1,2,3,4(输出不要求有序) 解: 利用快速排序的partition,算导上求第k大数的思想 ...

  2. *[topcoder]JumpFurther

    http://community.topcoder.com/stat?c=problem_statement&pm=12300&rd=15699 题意:有一个无限长的阶梯,i从1到N, ...

  3. orm框架与缓存的关系

    1.mybatis规定,一级缓存没必要bean类实现序列化,但二级缓存bean类必须实现序列化. 因为二级缓存是基于namespace的也就是基于接口的,二级缓存可以设置存储源,可以是redis或者m ...

  4. Eclipse中安装使用SVN

    参考网址: Eclipse中使用SVN - 流逝的是岁月,沉淀的是经典 - 博客频道 - CSDN.NET http://blog.csdn.net/v123411739/article/detail ...

  5. std::advance 给迭代器增加指定偏移量

    template <class InputIterator, class Distance> void advance (InputIterator& it, Distance n ...

  6. LCMS

    LCMS(LearningContent Management System) 即学习内容管理系统

  7. P147、面试题26:复杂链表的复制

    题目:请实现ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表.在复杂链表中,每个结点除了有一个m_pNext指针指向下一个结点外,还有一个 ...

  8. (从终端看linux-2)浅析terminal创建时ptmx和pts关系

    我们打开一个terminal,那么将会在devpts文件系统/dev/pts下创建一个对应的pts字符文件,该pts字符文件节点直接由/dev/ptmx节点的驱动函数ptmx_open()调用devp ...

  9. java截取url中的值

    Map<String, Object> urlSplit(String data){ StringBuffer strbuf = new StringBuffer(); StringBuf ...

  10. 制作计算器的代码(C#)

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...