2016-12-16 84 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中頁面的新位置。原來我有一個整數算術錯誤,隨着頁碼增加而累積。我已經消除了,現在一切都很好。