在scroller startScroll背后的逻辑?

在这个文档中,我不明白startScroll()startScroll()

它说:

正数将滚动内容到左边。

我不明白。 如果0总是在左边,为什么向左滚动? 如果否定,则会滚动到右侧。

但为什么? 我的头很难缠绕它。 它背后的逻辑是什么? 为什么要向左走呢?

在游戏和graphics编程中,0将始终是左上angular或左下angular,但始终位于左侧。 所以用正数向右移动并向负左移是有意义的。 但为什么在startScroll上有所不同呢?

我只是问因为我真的很好奇,为什么这样devise呢。

Related of "在scroller startScroll背后的逻辑?"

为了说明正在发生的事情,请参阅图纸:

  • 顶图显示坐标系: (0,0)在左上方,正方向是右(x坐标)和下(y坐标)。
  • 底部的插图显示了“查看端口”正在移动时的滚动效果。
  • 左边是调用滚动之前的位置
  • 右边是调用x = + 2,y = + 3滚动后的位置
  • 浅蓝色的矩形是屏幕“查看端口”:滚动方法实际上是移动这个矩形(屏幕的表示),而不是内容。 看到它就像一个你在世界上看到的相机。
  • 红点只是一个位于视图上的元素,并不会移动。 把它看作你所看到的世界。

您可以看到,移动“查看端口”在正方向和y方向的结果在红点看起来是向上和向左移动。 就像你把相机移到右边一样,video中的世界就会向左移动。

在这里输入图像说明

实际上,您将视图向右滚动,导致内容视图向左滚动。

|A|B|C| ,现在滚动正值会导致向右滚动,滚动实际内容到左侧: |B|C|A不再可见,因为它被视为内容并向左滚动。

我们可以用两种不同的方式想象一个卷轴。 一个是窗口正在移动,另一个是内容正在移动。 根据Android的文档getScrollX()

返回此视图的滚动左侧位置。 这是您的视图的显示部分的左边缘。 你不需要画更远的像素,因为那些像素在屏幕上的视图框架之外。

显然Android更喜欢各自的内容滚动,而不是各自的窗口。 内容各自的卷轴

正数将滚动内容到左边。

不仅startScroll() ,像View.scrollBy()View.scrollTo()等其他方法工作在同一个想法。

如果你问“哪个更自然的想象,各自的内容还是窗口?”,我会说“我不知道”。

您的容器视图固定在您的屏幕上。 当您向右滚动时,正确的项目向左stream动。 因此,当你这样做

 scroller.startScroll (int 2 /*startX */, int startY, int dx, int dy, int duration); 

使您的内容将滚动到左侧。

滚轮实际上是水平或垂直的边栏,当出现滚动手势时显示。 考虑滚动的运动,并观察它在应用程序中的行为。 你会明白为什么这么执行。 您目前正在考虑触摸位置,造成混乱。