【发布时间】:2023-03-11 15:56:01
【问题描述】:
x 要滚动到的 x 位置
y 要滚动到的 y 位置
onScrollChanged(int l, int t, int oldl, int oldt) 说:
l 当前水平滚动原点。
t 当前垂直滚动原点。
我想知道但在任何地方都找不到,x,y 在哪里?左上方?中心?我试了几下,还是搞不定。
【问题讨论】:
标签: android android-view android-scroll
x 要滚动到的 x 位置
y 要滚动到的 y 位置
onScrollChanged(int l, int t, int oldl, int oldt) 说:
l 当前水平滚动原点。
t 当前垂直滚动原点。
我想知道但在任何地方都找不到,x,y 在哪里?左上方?中心?我试了几下,还是搞不定。
【问题讨论】:
标签: android android-view android-scroll
经过广泛的研究和测试,我终于明白了scrollTo() 的工作原理。
(0,0) 是View 容器左上角的坐标。当滚动到任何(x,y) 点时,View 的左上角将位于(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);
所附图像显示了View 的图形表示和位图图像定位。
【讨论】:
来自getX():
此视图的视觉 x 位置,以像素为单位。这相当于 translationX 属性加上当前 left 属性。
对于getY(),它来自顶部。所以 (0,0) 在左上角。
我不知道scrollTo() 是否考虑了translationX 属性,因为它是“最近的”并且我有一段时间没有编写代码了,但我敢打赌。
【讨论】: