28

scrollTo(int x, int y)说:

x 要滚动到的 x 位置

y 要滚动到的 y 位置

onScrollChanged(int l, int t, int oldl, int oldt)说:

l 当前水平滚动原点。

t 当前垂直滚动原点。

我想知道但在任何地方都找不到,x,y 在哪里?左上方?中心?我尝试了一些测试,但无法弄清楚。

4

2 回答 2

72

经过广泛的研究和测试,我终于明白了scrollTo()的工作原理。

(0,0)是View容器左上角的坐标。当滚动到任意一点时, View(x,y)的左上角将被放置在该坐标处。(x,y)

如果View显示的图像BitmapView本身大,滚动到(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);

所附图像显示了视图和位图图像定位的图形表示。

图像和视图之间关系的图形表示。

于 2011-10-21T15:39:00.400 回答
1

来自getX()

此视图的视觉 x 位置,以像素为单位。这相当于translationX 属性加上当前的left 属性。

因为getY()它来自顶部。所以 (0,0) 在左上角。

我不知道是否scrollTo()考虑了该translationX属性,因为它是“最近的”并且我已经有一段时间没有编码了,但我敢打赌它会。

于 2011-10-14T20:46:51.257 回答