View#scrollBy(int x , int y)反向

先看下源码

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();
        }
    }
}

了解了scrollBy( x , y)就是在原来的基础上,改mScrollX为x,改为mScrollY为Y。

比如调用view#scrollBy(100 , 50)后,mScrollX增加了100,mScrollY增加了50。但是这个view的内容却往反方向移动了,就是往左边移动100 ,上边移动50。

而mScrollX和mScrollY的定义:

mScrollX = View的内容左边框的x坐标值 - 实际的View左边缘的x坐标。

mScrollY = View的内容上边框的的y坐标值 - 实际的View上边缘的y坐标。

而View的内容左边框的x坐标值和View的内容上边框的y坐标值在用View#scrollToView#scrollBy是不会改变的。

因此当调用scrollBy(int x , int y)中的参数都填入正值时,

mScrollX = View的内容左边框的x坐标值 - 实际的View左边缘的x坐标。

由等式性质得:实际的View的左边缘的x坐标,减少。

即scrollBy(x, y )的x>0时,view会往左跑。这就是scrollBy(int x , int y)反向的原因。

那么要让view的内容往右下方走的话,就要为scrollBy传入负值。比如:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 预备知识 Android屏幕区域划分我们先看一副图来了解一下Android屏幕的区域划分,如下:Android屏幕...
    小芸论阅读 9,088评论 6 44
  • 主要总结了: View的基础知识:View的mTop、mLeft、mRight、mBottom四个参数和对应的四个...
    Utte阅读 1,987评论 0 1
  • 开发中,为了增加更多炫丽的效果,我们经常在应用中添加滑动效果,今天就来分析一下 View 中滑动效果的实现原理以及...
    任教主来也阅读 3,165评论 0 14
  • 根已离俗尘 清照玉影真 幽芳凉风醉 瘦似相思人 ——兰总给人以清,幽,静的美感……无痕写于2017.07.07
    心醉了无痕_ac0b阅读 174评论 0 0
  • *完成图 工具,自动铅,辉柏嘉48色水溶彩铅,针管笔005,高光笔。 第一步,自动铅画出线稿,上下左右点找好,比较...
    秀英阅读 3,127评论 34 60

友情链接更多精彩内容