美文网首页Android知识Android开发Android技术知识
《Android开发艺术探索》——View事件体系

《Android开发艺术探索》——View事件体系

作者: 小编 | 来源:发表于2017-03-13 20:26 被阅读545次

自定义控件、滑动冲突解决

View基础知识

  1. View的位置参数
  2. MotionEvent和TouchSlop对象
  3. VelocityTracker
  4. GestureDetector和Scroller对象

1. View的位置参数

原理图

当在MotionEvent.ACTION_UP事件触发时,调用startScroll方法,并调用invalidate/postInvalidate方法,会导致View重绘,执行View.draw方法。在此方法中会调用View.computeScroll方法,此方法是空实现,需要我们自己处理逻辑。具体逻辑是:先判断computeScrollOffset,如果为true,表示滚动未结束。则执行scrollTo方法,再次调用postInvalidate,如此反复执行,直到结束。

computeScrollOffset方法计算了一小段时间间隔内偏移的距离,即CurrX,CurrY。并返回是否滚动结束的标记。true表示未结束,false表示结束。

View的scrollTo/scrollBy方法操作的View的内容滑动。
getScrollX返回的是View的左边缘到其内容左边缘的距离。相对于View的左边缘
getScrollY返回的是View的上边缘到其内容上边缘的距离。

如果View的内容向左滑,滑出View的左边界,getScrollX为正值,反之为负值。
如果View的内容向上滑,滑出View的上边界,getScrollY为正值,反之为负值。

getScrollX和getScrollY的变化示意图

参考链接:
Android Scroller完全解析,关于Scroller你所需知道的一切 - 郭霖

相关文章

网友评论

    本文标题:《Android开发艺术探索》——View事件体系

    本文链接:https://www.haomeiwen.com/subject/ltsevttx.html