2010-07-23 31 views
2

我知道如何通過擴展視圖並重寫OnDraw來拖動球,然後計算新的座標並重新繪製球。 如果我在視圖中有數百個形狀,並且需要整個視圖與所有形狀一起移動,該怎麼辦?重新計算每一個形狀似乎不可行。 在Iphone上,我可以在視圖中繪製一堆東西,然後移動整個視圖,併爲我繪製視圖內的東西。我只需重新計算視圖的座標,然後將位置設置爲不適用於視圖內的所有內容。 這是可能的Android?如何移動/拖動包含一堆形狀的整個android視圖?

感謝, 史蒂芬

+0

Android沒有爲我們做計算嗎?如果你在View上做了invalidate(),然後你重寫它的onDraw方法在新的位置繪製?因爲這個內部的視圖層次被附加到它,它應該工作? (只提示對我而言似乎合乎邏輯的東西,不確定) – Sephy 2010-07-23 16:50:55

+0

所以你說我應該有一個視圖內的視圖? 現在我做invalidate()並重寫OnDraw,但在OnDraw中,你必須手動完成你的繪圖,並重新給它一個新的座標,如果我有數以百計的繪畫,我將不得不給我繪製的所有東西的新座標視圖。 據我所知重寫OnDraw把你完全控制繪製視圖。 – user377597 2010-07-24 13:52:31

回答

0

使用Canvas.translate()方法來抵消一切你onDraw()處理程序中被繪製。

根據光標移動或其他情況跟蹤翻譯偏移,並在您撥打translate()時使用這些偏移。

您可以使用Canvas.scale()來處理捏縮放類似的效果。

不要忘了save()restore()Canvas回到原來的狀態!

如果您只想在另一個視圖中移動視圖,只需調整頂部/左側屬性並致電Invalidate()即可。如果它是一個複雜的佈局,請執行RelativeLayout中的所有操作,並使用LayoutParams來定位所有內容。