看看Android源码中View是如何实现LongPress的
Posted bdmh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了看看Android源码中View是如何实现LongPress的相关的知识,希望对你有一定的参考价值。
除了最常用的点击事件(Click),还有一个长按事件(LongPress),比如长按弹出复制、粘贴的菜单,长按弹出自定义View等等。这篇文章我们就来看看android源码中是如何实现长按事件的。
既然是手势动作,那就逃不过onTouchEvent。直接找到View代码中的onTouchEvent。
这个时间里面,首先会检查几个是否可点击的状态,比如点击、长按、环境点击(触笔、鼠标右键等)。
final boolean clickable = ((viewFlags & CLICKABLE) == CLICKABLE
|| (viewFlags & LONG_CLICKABLE) == LONG_CLICKABLE)
|| (viewFlags & CONTEXT_CLICKABLE) == CONTEXT_CLICKABLE;
然后还会判断是否可用,以及是否由其它Touch的代理去处理Touch事件。
if ((viewFlags & ENABLED_MASK) == DISABLED)
......
if (mTouchDelegate != null)
当手势按下时
case MotionEvent.ACTION_DOWN:
......
//判断是否点击的是可滚动的容器
if (isInScrollingContainer)
......
else
// Not inside a scrolling contain
以上是关于看看Android源码中View是如何实现LongPress的的主要内容,如果未能解决你的问题,请参考以下文章