protected int mScrollY; public void setScrollY(int value) { scrollTo(mScrollX, value); } public void scrollTo(int x, int y) { if (mScrollX != x || mScrollY != y) { mScrollX = x; mScrollY = y; if (!awakenScrollBars()) { postInvalidateOnAnimation(); } } }
draw()绘制, 关键代码(伪代码)
public void draw(Canvas canvas) { int left = mScrollX + paddingLeft; int right = left + mRight - mLeft - mPaddingRight - paddingLeft; int top = mScrollY + getFadeTop(offsetRequired); int bottom = top + getFadeHeight(offsetRequired); canvas.saveUnclippedLayer(left、top、right、位置信息); canvas.drawRect(left、top、right、bootm 位置信息)}四. 补间动画 和属性动画 怎样实现的?