2016-12-16 46 views
0

我遇到了一个问题,希望有人能帮助我。我使用滚动和缩放来显示多页文档。滚动工作正常,但是在缩放时,我会在你去的文档的更远处发生紧张的行为,比如说第25页左右。在VewGroup中放大抖动

该文档由一个ViewGroup(DocView)表示,该ViewGroup包含一个包含100个代表页面的自定义视图(DocPageView)的数组。 DocView测量页面并将其垂直排列在单个列中。一个GestureDetector用于监视滚动,一个ScaleGestureDetector用于缩放。在onScale()中,我计算一个新的比例因子,调整滚动位置并调用requestLayout()。在onLayout()中,我计算孩子的位置并将它们排列出来。作为优化,我添加/删除不可见的子项。

DocPageView是非常小的,它只是用一个页码自己绘制。

缩放时,我正在调整滚动位置,以便将夹点的焦点保持在大致相同的位置。当getScrollY()是一个很小的数字时,事情就会顺利进行。但是当我向下滚动到第25页然后缩放时,就会发生紧张情绪。

我认为总体上看起来更容易,而不是在这里发布片段。所以这是整个事情。

[http://www.ross-perry.com/StackOverflow/ScalingTest.zip] 

请让我知道你是否有想法或曾看过这类事情。 谢谢。

+0

看起来像你正在做所有页面1-25一些工作,这是在16ms(帧之间的时间)完成太多。 – Henry

+0

谢谢亨利。我试图限制onScale不超过25毫秒,并且它仍然在发生。也试过50毫秒。 –

回答

0

对不起,每个人都困扰。结果发现,在每个新的比例值下,我都会重新计算onLayout中页面的新位置。原来我有一个整数算术错误,随着页码增加而累积。我已经消除了,现在一切都很好。