scrollTo与scrollBy的区别

scrollTo(int x, int y) : to有到达的意思,即 滑动到(x,y)点;

scrollBy(int x, int y) :by有经过的意思,即 再经过x,经过y后到达的坐标。

scrollTo()和scrollBy()滚动的是View的内容,而不是将View做整体的移动。比如,对于一个TextView而言,文本就是它的内容;对于一个ViewGroup而言,子View就是它的内容。(链接


走到源码中可以看到scrollBy方法最后调用的scrollTo方法:

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


public void scrollTo(int x, int y) {
    if (mScrollX != x || mScrollY != y) {
        int oldX = mScrollX;
        int oldY = mScrollY;
        mScrollX = x;
        mScrollY = y;
        invalidateParentCaches();
        onScrollChanged(mScrollX, mScrollY, oldX, oldY);
        if (!awakenScrollBars()) {
            postInvalidateOnAnimation();
        }
    }
}
通过scrollTo方法的源码可以得出:( 链接

  1. scrollTo( )表示View相对于其初始位置滚动某段距离。 
    由于View的初始位置是不变的,所以如果利用相同输入参数多次调用scrollTo()方法,View只会出现一次滚动的效果而不是多次。
scrollTo和scrollBy移动的方向:view.scrollTo或view.scrollBy表示对view中的子view进行移动,如果view是TextView或Button是对里面的文字进行移动。


上图的页面是个TextView,背景色为蓝色,文字居中为Hello World!  从上图可以看出o点为文字的开始坐标点(0,0),即文字的左上角,当x>0时,向左移动;当y>0时,向上移动。
当执行textView.scrollBy(20,0),文字 会在当前位置上,移动到(x+20,y+0);
当执行textView.scrollTo(20,0),文字 会在原始的位置上(0,0),移动到(20,0)的位置上。
当执行textView.scrollTo(0,0),文字会回到原始的位置上(0,0)


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值