x 要滚动到的 x 位置
y 要滚动到的 y 位置
onScrollChanged(int l, int t, int oldl, int oldt)
说:
l 当前水平滚动原点。
t 当前垂直滚动原点。
我想知道但在任何地方都找不到,x,y 在哪里?左上方?中心?我尝试了一些测试,但无法弄清楚。
x 要滚动到的 x 位置
y 要滚动到的 y 位置
onScrollChanged(int l, int t, int oldl, int oldt)
说:
l 当前水平滚动原点。
t 当前垂直滚动原点。
我想知道但在任何地方都找不到,x,y 在哪里?左上方?中心?我尝试了一些测试,但无法弄清楚。
经过广泛的研究和测试,我终于明白了scrollTo()的工作原理。
(0,0)
是View容器左上角的坐标。当滚动到任意一点时, View(x,y)
的左上角将被放置在该坐标处。(x,y)
如果View显示的图像Bitmap比View本身大,滚动到(0,0)
将View放置在图像的中心。这样,图像的左上角将位于 ,(-dX/2, -dY/2)
右下角位于(mW - dX/2, mH - dY/2)
。dX
表示图像宽度与View之间的差异。并dY
表示图像高度与View之间的差异。
为了看到右下角而不是通过它(向右下方或更远),这是正确的调用:scrollTo(mW - ivW - dX/2, mH - ivH - dY/2);
所附图像显示了视图和位图图像定位的图形表示。
来自getX()
:
此视图的视觉 x 位置,以像素为单位。这相当于translationX 属性加上当前的left 属性。
因为getY()
它来自顶部。所以 (0,0) 在左上角。
我不知道是否scrollTo()
考虑了该translationX
属性,因为它是“最近的”并且我已经有一段时间没有编码了,但我敢打赌它会。