我的应用程序布局是这样的:
蓝色区域是我的内容,4096px。红框是一个电话屏幕,它是一个 HorizontalScrollView。
我的布局是这样的:
<HorizontalScrollView>
<ChartContent>
</ChartContent>
</HorizontalScrollView>
当 HorizontalScrollView(为了方便起见,我将其称为 HSV)滚动到内容区域的末尾时。我将它滚动到内容区域的开头,并在我的内容区域中重新绘制图表。这会让用户觉得它就像一个无尽的滚动视图。
我关注这篇文章:同步 ScrollView 滚动位置 - android。继承horizontalScrollView类并重写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 —> ok
onScrollChanged: 3579 -> 60, speed = -3519 —> ok
onScrollChanged: 60 -> 3738, speed = 3678 —> wrong
onScrollChanged: 3738 -> 60, speed = -3678 —> wrong
onScrollChanged: 60 -> 60, speed = 0 —> wrong
第 3 - 5 行非常混乱,HSV 会突然停在位置 x = 60。
我的实现有问题吗?或者我可以使用其他解决方案来实现我的目标吗?