Android群英传 QuickNote

自定义View

文末附源码地址

1.滑动时onTouchEvent的调用过程 - Log说明一切!

//截取了部分LOG信息
04-27 09:02:23.607 12110-12110/com.hero D/123: onTouchEvent 04-27 09:02:23.607 12110-12110/com.hero I/123: ACTION_DOWN   //可见,DOWN只执行了一次,DOWN在break之后,
                                       //再重新走onTouchEvent方法,并开始进入MOVE方法;
                                       //MOVE中重复执行:MOVE-》break-》onTouchEvent-》MOVE。                    
04-27
09:02:23.651 12110-12110/com.hero D/123: onTouchEvent 04-27 09:02:23.652 12110-12110/com.hero V/123: ACTION_MOVE... 04-27 09:02:23.652 12110-12110/com.hero E/123: 0 --- 0 //这个是做的offset偏移量,下面的scroll会用到 04-27 09:02:23.668 12110-12110/com.hero D/123: onTouchEvent 04-27 09:02:23.668 12110-12110/com.hero V/123: ACTION_MOVE... 04-27 09:02:23.668 12110-12110/com.hero E/123: 0 --- 0 04-27 09:02:23.684 12110-12110/com.hero D/123: onTouchEvent 04-27 09:02:23.684 12110-12110/com.hero V/123: ACTION_MOVE... 04-27 09:02:23.684 12110-12110/com.hero E/123: 0 --- 0 04-27 09:02:23.701 12110-12110/com.hero D/123: onTouchEvent 04-27 09:02:23.701 12110-12110/com.hero V/123: ACTION_MOVE... 04-27 09:02:23.701 12110-12110/com.hero E/123: 0 --- 0 04-27 09:02:23.718 12110-12110/com.hero D/123: onTouchEvent

2.scrollTo与scrollBy  -  核心一句话“左加右减,上加下减”

摘要

  • scrollBy是内部就是调用的scrollTo方法:scrollTo(mScrollX + x, mScrollY + y);   ;
  • scrollTo、scrollBy方法移动的是View的content,即让View的内容移动;如果在ViewGroup中使用scrollBy、scrollTo方法,那么移动的是该ViewGroup中所有的子View,但如果在View中使用,那么移动的将是View的内容。例如:TextView,content就是他的文本,ImageView,content就是它的drawable对象。
 MyView内部调用:
((View) getParent()).scrollBy(offsetX, offsetY);
 外部调用:
((View) myView.getParent()).scrollBy(offsetX, offsetY);

相当于MyView的content上有一层带眼儿的盖板(MyView本身),当调用scrollTo、scrollBy方法时,移动的是盖板。

  • scrollTo、scrollBy 向右或向下移动是负值,向上或向左移动传正值;

mScrollX与mScrollY

  • mScrollX 表示的是view的左边缘到view的内容的左边缘的水平距离,类似的,mScrollY表示的是view的上边缘与view内容的上边缘的竖直方向的距离;
  • 二者分别通过getScrollX() 和getScrollY()方法获得;
  • mScrollX和mScrollY指的并不是坐标,而是偏移量(距离)。

参考:android 布局之滑动探究 scrollTo 和 scrollBy 方法使用说明

     Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明

3.Scroller

                           

参考:Android Scroller与computeScroll的调用机制关系

源码地址

https://github.com/javakam/AndroidHeros

原文地址:https://www.cnblogs.com/jooy/p/8953076.html