第141篇View 的滑动实现:scrollTo、Scroller 与属性动画
先把结论放在前面:View 的滑动只有三条路——改translationX/Y(重绘)、改scrollX/scrollY(重绘)、改left/top也就是LayoutParams(重排)。前两条不改布局,走重绘;后一条触发requestLayout,进入测量布局流程。这个分类是这题的骨架,后面所有的性能结论、动画选型、坑位都从这里推出来。这题的特点是"人人都写过,但说不清代价"。面试里常见的两种丢分:一种是只答scrollTo/scrollBy,被问"那和translationX有什么区别"就卡住;另一种是把scrollTo当成动画来用,结果手指一停内容就跳回去——因为scrollTo是瞬时赋值,不产生插值。三条路各自的机制与代价第一条:translationX/translationY。它是Matrix变换的一部分,View绘制时通过canvas.translate(-mScrollX + mTranslationX, ...)参与坐标计算,它不影响getLeft/getTop/getRight/getBottom返回的布局位