我不会在documentation中了解startScroll()
。
它说:
正数会将内容滚动到左侧。
我不明白。如果0总是在左侧,为什么向左滚动?如果是否定的,它将滚动到右侧。
但为什么呢?我很难绕过它。它背后的逻辑是什么?为什么要积极向左移动?
在游戏和图形编程中,0将始终为左上角或左下角,但它始终位于左侧。因此,使用正数向右移动并以负数向左移动是有意义的。但是为什么它在startScroll上有所不同?
我只是问为什么我真的好奇为什么设计它这样。
答案 0 :(得分:5)
为了说明发生了什么,请参见图纸:
(0,0)
位于左上角,正方向是右(x坐标)和下(y坐标)。您可以看到,在正x和y方向上移动“视口”会导致红点显示向上和向左移动。就像你向右移动一个摄像头一样,会让视频中的世界向左移动。
答案 1 :(得分:3)
You are in fact scrolling the view to right, which result the content view to be scrolled to left.
Having |A|B|C|
, now scrolling by positive value will result a scroll to right, which scroll the actual content to left: |B|C|
- A
is not visible anymore, because it is considered as a content and is scrolled to left.
答案 2 :(得分:1)
我们可以用两种不同的方式想象一个卷轴。一个是窗口正在移动,另一个是内容正在移动。根据Android getScrollX()
的文档很明显,Android更喜欢内容各自的滚动而不是窗口各自的滚动。在内容各自的卷轴返回此视图的向左滚动位置。这是视图显示部分的左边缘。您不需要向左绘制任何像素,因为它们位于屏幕视图框架之外。
正数会将内容滚动到左侧。
不仅startScroll()
,View.scrollBy()
,View.scrollTo()
等其他方法也有同样的想法。
如果你问的是哪个更自然的想象力,相应的内容或窗口各自?",我会说"我不知道"。
答案 3 :(得分:1)
您的容器视图已在您的屏幕上修复。当您向右滚动时,正确的项目会向左流动。因此,当你做
时scroller.startScroll (int 2 /*startX */,
int startY,
int dx,
int dy,
int duration);
使您的内容向左滚动。
答案 4 :(得分:1)
滚动条实际上是水平或垂直侧边栏,当有滚动手势时会出现。考虑关于滚动条的移动并观察它在应用程序中的行为。你会理解为什么这样做。您目前正在考虑触摸位置,导致混淆。