安卓自定义View之滑动

2018-12-09  本文已影响0人  sofarsogoo_932d

Scroller的基础知识

Scroller类其实并不负责“滚动”这个动作,“滚动”的动作[1]是由基类View的scrollTo(x,y)scrollBy(dx,dy)的这两个方法完成的,Scroller类只是根据要滚动的起始位置和结束位置生成中间的过渡位置,从而形成一个滚动的动画。

一个View在容器(比如ViewGroup)中的滚动不是自身发起的动作,而是由父容器驱动容器内的子控件来完成,换句话说就是发生滚动效果的是组件的内容。例如在ViewGroup中使用Scroller,移动的是所有子View。但如果在TextView中使用,那么移动的将是TextView中的文本。

scrollTo(x,y)和scrollBy(dx,dy)

scrollTo,滚动到指定的位置
scrollBy,在原来的基础上,在滚动(dx,dy)的距离,内部的实现其实是调用了scrollTo

public void scrollBy(int x, int y) {
  scrollTo(mScrollX + x, mScrollY + y);
}

此处的x,y是相对于当前View左上角
当x为负数时,表示内容向右滚动
当y为负数时,表示内容向下滚动

getX,getTranslationX和getScrollX的区别

上一篇 下一篇

猜你喜欢

热点阅读