【发布时间】:2010-12-06 21:24:18
【问题描述】:
我是 Android 平台的新手。我在我的应用程序中使用 AminationDrawable 为一组 16 个“帧”设置动画:
在我的 XML 文件中:
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/image_1" android:duration="200" />
<item android:drawable="@drawable/image_1_25" android:duration="200" />
<item android:drawable="@drawable/image_1_5" android:duration="200" />
<item android:drawable="@drawable/image_1_75" android:duration="200" />
<item android:drawable="@drawable/image_2" android:duration="200" />
<item android:drawable="@drawable/image_2_25" android:duration="200" />
<item android:drawable="@drawable/image_2_5" android:duration="200" />
<item android:drawable="@drawable/image_2_75" android:duration="200" />
<item android:drawable="@drawable/image_3" android:duration="200" />
<item android:drawable="@drawable/image_3_25" android:duration="200" />
<item android:drawable="@drawable/image_3_5" android:duration="200" />
<item android:drawable="@drawable/image_3_75" android:duration="200" />
<item android:drawable="@drawable/image_4" android:duration="200" />
<item android:drawable="@drawable/image_4_25" android:duration="200" />
<item android:drawable="@drawable/image_4_5" android:duration="200" />
<item android:drawable="@drawable/image_4_75" android:duration="200" />
</animation-list>
在 Java 代码中我有以下内容
首先我要声明这个类并添加一个onCreate() 方法来设置动画。
public class MyNewActivity extends Activity
{
// member variables (accessible from within class methods below).
AnimationDrawable mainAnimation;
long mSpeed = 50;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.my_widget);
// set up image
ImageView mainImage = (ImageView) findViewById(R.id.image_widget);
mainImage.setBackgroundResource(R.drawable.animated_image);
mainAnimation = (AnimationDrawable) mainImage.getBackground();
};
<...snip...>
...然后当用户按下按钮时我开始绘图,我调用以下命令开始动画移动:
private void start()
{
// start the image rotating.
if (mainAnimation.isRunning())
mainAnimation.stop();
int numFrames = mainAnimation.getNumberOfFrames();
for (int ii = 0; ii < numFrames; ii++ )
{
// change the animation speed.
Drawable d = mainAnimation.getFrame(ii);
mainAnimation.scheduleDrawable(d, mainAnimation, mSpeed);
}
}
<...snip...>
所以在代码的其他地方我有一个地方可以调整成员变量mSpeed。如果我这样做然后调用start(),动画将开始,但速度总是相同的(基本上是在上面的 XML 中定义的。我的问题是,如何修改帧的“持续时间”以移动这个动画根据用户输入更快/更慢?我看不到修改“持续时间”状态的方法,并且假设上面的 ScheduleDrawable() 调用会改变绘图的帧持续时间。
【问题讨论】:
-
好问题。通过查看开发人员文档,我看不到这样做的方法,但我有兴趣看到答案。
标签: android