Android进度条:不带图像的动画不确定

时间:2011-04-05 14:00:02

标签: android android-layout

我想创建一个不确定的动画,只是从一种颜色淡化到另一种颜色(脉冲,如果你愿意的话)。我不认为这应该要求使用图像,但尽管我付出了最大的努力,但我不确定我是否理解如何使用AlphaAnimationShape来完成此任务。

有人可以提供一些有关如何实现这一目标的见解吗?我有一种感觉,我在这里错过了一些相当简单的东西。 (总是赞赏这些例子!)

谢谢!

1 个答案:

答案 0 :(得分:2)

这是3.0中的一项简单任务 - 您可以设置一个ObjectAnimator来更改两个值之间的对象(View,ColorDrawable,具有属性)的“color”或“backgroundColor”。有关此示例,请参阅ApiDemo动画/ BouncingBalls。

但假设您使用的是3.0之前的API,则有几种方法。首先,您可以设置自己的处理程序,为您提供所需的计时事件,然后计算每个点的新颜色。

使用AlphaAnimation可能稍微容易一些(如果不是完全直观的话)。你真正想要的动画是百分比值,而不是淡化任何东西。因此,您不要在视图上设置动画,只需将其设置为从0到1的内部运行,然后在onDraw()方法中获取当前的动画值并适当地设置当前颜色。

例如,这将设置并启动alpha动画以运行一秒钟:

Transformation transform = new Transformation();
AlphaAnimation anim = new AlphaAnimation(0f, 1f);
anim.setDuration(1000);
anim.start();

然后在绘图循环中,获取当前的动画值:

long time = getDrawingTime();
anim.getTransformation(time, transform);
float elapsedFraction = transform.getAlpha();

获得elapsedFraction(介于0和1之间的值)后,您可以计算相应的中间颜色值。

上面的代码可能与您的具体情况不符,但您应该能够做类似的事情来获得您想要的东西。