Android View.scrollTo(x, y) 滚动到哪里?
x 要滚动到的 x 位置
y 要滚动到的 y 位置
onScrollChanged(int l, int t, int oldl, int oldt)
说:
l 当前水平滚动原点。
t 当前垂直滚动原点。
我想知道但在任何地方都找不到,x,y 在哪里?左上?中心?我尝试了一些测试,但无法弄清楚。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
经过广泛的研究和测试,我终于明白了 scrollTo() 有效。
(0,0)
是 查看容器。当滚动到任何(x,y)
点时,View 将放置在(x,y)
坐标处。如果 View 显示图像,位图,大于 View 本身,滚动到
(0,0)
将放置 在图像中心查看。这样,图像的左上角将位于(-dX/2, -dY/2)
,右下角将位于(mW - dX/2, mH - dY/2)
。dX
表示图像宽度与 查看。而dY
表示图像的高度与查看。为了看到右下角而不是越过它(更低或更靠右),正确的调用是:scrollTo(mW - ivW - dX/2, mH - ivH - dY/2);
附图显示了 View 和位图图像定位。
After extensive research and testing I've finally understood how scrollTo() works.
(0,0)
are the coordinates to the top left corner of the View container. When scrolling to any(x,y)
point, the top left corner of the View will be placed at the(x,y)
coordinates.If the View is showing an image, Bitmap, larger than the View itself, scrolling to
(0,0)
will place the View in the center of the image. This way, the top left corner of the image will be located at(-dX/2, -dY/2)
and the bottom right corner at(mW - dX/2, mH - dY/2)
.dX
represents the difference between the widths of the image and the View. AnddY
represents the difference between the heights of the image and the View.In order to see the bottom right corner and not go passed it (lower or further to the right), this is the proper call:
scrollTo(mW - ivW - dX/2, mH - ivH - dY/2);
The attached image shows the graphical representation of the View and Bitmap image positioning.
来自
getX()
:对于
getY()
来说,它是从顶部开始的。所以 (0,0) 是左上角。我不知道
scrollTo()
是否考虑了translationX
属性,因为它是“最近的”,而且我已经有一段时间没有编码了,但我会我打赌确实如此。From
getX()
:For
getY()
it's from top. So (0,0) is top left.I don't know if
scrollTo()
takes into account thetranslationX
property, because it's "recent" and I haven't been coding for a while, but I'd bet it does.