2010-08-28 54 views
1

不推荐使用AbsoluteLayout类(并且包含带有x和y属性的LayoutParams类)。虽然有可能推出我自己的扩展ViewGroup的类,并使我能够控制子视图的绝对位置 - 这是精灵动画的最佳方法吗?替代AbsoluteLayout?精灵动画的最佳途径?

首先,我所做的假设,即通过改变其x和y位置走动ImageViews会比重绘SurfaceView内的位图更有效。这个假设是正确的吗?

我的更广泛的问题是:什么是动画在Android的精灵的最佳方法?

回答

0

要回答第一个问题:你可以使用FrameLayout代替。这是所有布局管理员中最简单的,只需将所有的孩子放在左上角。您可以使用View上定义的offsetTopAndBottom()offsetLeftAndRight()函数来翻译它们。或者,FrameLayout的布局参数支持设置边距。 Droid-Fu使用这种技术在屏幕上放置粘滞的视图。这里是source code

至于你的其他问题,我假设你的意思是基于关键帧的动画。 Frame animations are documented here

+0

不,我不是指框架动画。虽然特定的精灵可能是框架动画。 FrameLayout看起来像我想要的。再次,我的假设是移动视图窗口部件比在SurfaceView动画中重绘位图要快。 – user433579 2010-08-28 08:47:12

+0

这不起作用。 offsetTopAndBottom()和offsetLeftAndRight()对视图的位置没有影响。 setPadding()也没有。我应该调用什么样的“refresh()/ invalidate()”方法?目前,我正试图在TimerTask的run()方法内移动图标。我假设我的TimerTask对象在UI线程中,因此更新UI应该没有问题。为什么它不起作用? – user433579 2010-08-28 10:39:32

+0

是的,它工作 - 我正在使用它。您是否通过链接的源代码工作?只要运行它并从那里出发。至于动画,Android上只有补间和框架动画。为什么这对你不够? – Matthias 2010-08-29 14:12:38

0

我发现如果您的动画仅包含几帧,则在SurfaceView中重新绘制位图更加可行。所以这取决于你在做什么样的动画。