2010-07-23 17 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来定位所有内容。

相关问题