1

我的应用程序布局是这样的:

请点击查看此图片

蓝色区域是我的内容,4096px。红框是一个电话屏幕,它是一个 Horizo​​ntalScrollView。

我的布局是这样的:

<HorizontalScrollView>
  <ChartContent>
  </ChartContent>
</HorizontalScrollView>

当 Horizo​​ntalScrollView(为了方便起见,我将其称为 HSV)滚动到内容区域的末尾时。我将它滚动到内容区域的开头,并在我的内容区域中重新绘制图表。这会让用户觉得它就像一个无尽的滚动视图。

我关注这篇文章:同步 ScrollView 滚动位置 - android。继承horizo​​ntalScrollView类并重写onScrollChanged方法,这样我就可以得到HSV的当前x。

像这样记录:

这意味着红框从左向右移动(oldx -> x)

onScrollChanged: 1006 -> 1180, speed = 174
onScrollChanged: 1006 -> 1180, speed = 174
onScrollChanged: 1180 -> 1254, speed = 74
onScrollChanged: 1180 -> 1254, speed = 74
onScrollChanged: 1254 -> 1325, speed = 71
onScrollChanged: 1254 -> 1325, speed = 71
onScrollChanged: 1325 -> 1366, speed = 41
onScrollChanged: 1325 -> 1366, speed = 41
onScrollChanged: 1366 -> 1406, speed = 40
onScrollChanged: 1366 -> 1406, speed = 40
onScrollChanged: 1406 -> 1449, speed = 43
onScrollChanged: 1406 -> 1449, speed = 43
onScrollChanged: 1449 -> 1499, speed = 50
onScrollChanged: 1449 -> 1499, speed = 50
onScrollChanged: 1499 -> 1518, speed = 19
onScrollChanged: 1499 -> 1518, speed = 19
onScrollChanged: 1518 -> 1544, speed = 26

但是当我在 onScrollChanged 中调用 scrollTo 时:

call HSV.scrollTo(60)

日志:

onScrollChanged: 3708 -> 60, speed = -3648 —&gt; ok
onScrollChanged: 3579 -> 60, speed = -3519 —&gt; ok
onScrollChanged: 60 -> 3738, speed = 3678 —&gt; wrong
onScrollChanged: 3738 -> 60, speed = -3678 —&gt; wrong
onScrollChanged: 60 -> 60, speed = 0 —&gt; wrong

第 3 - 5 行非常混乱,HSV 会突然停在位置 x = 60。

我的实现有问题吗?或者我可以使用其他解决方案来实现我的目标吗?

4

0 回答 0