我正在尝试创建一个Android应用,其中包含许多(有时最多约200个)小图像,这些图像将被动画(重新定位和更改大小),一次大约20个。之后他们会保持不动。
我应该使用View类动画的简单解决方案还是应该使用Drawable动画?
编辑:我应该更具体..
有很多教程和很多不同的方法来做同样的事情。我正在寻找实现下一个场景的最佳方式:
假设我当前在屏幕上绘制了50个不同的小(30x30)图像。 我需要为它们设置动画,以便它们转换为不同的 DYNAMIC 位置。当他们移动时我需要上下调整图像的大小(如果从顶部看,我会得到一种跳跃效果)。 他们需要在特定的时间范围内移动。例如:第一张图像开始移动后,第二张图像会在最后一张图像开始后移动50毫秒,以此类推(波浪效果)...... 翻译完一组图像后,将形成另一组,但最后一组仍将在屏幕上显示。
所以我要问的是有关最佳方法的一些细节。例如:我应该为每个Image创建一个XML文件,还是应该只在代码中加载它们?我应该在应用程序启动时加载所有图像(可能有多达200个小图像,可能更多),还是可以根据需要加载它们?什么是最好的动画技术?这样的东西。
答案 0 :(得分:1)
我找到的最简单的解决方案:(API 16 +)
Runnable endAction = new Runnable() {
public void run() {
tv.animate().x(400).y(1400).scaleX(1).scaleY(1);
}
};
tv.animate().x(600).y(100).scaleX(3).scaleY(3).withEndAction(endAction);
答案 1 :(得分:0)
我会使用Drawable动画,但这并不重要。如果应用程序运行速度非常慢,您应该做的重要事情是使用此代码使用差异threads,例如:
Handler mHandler = new Handler();
mHandler.post(new Runnable() {
public void run() {
//YOUR ANIMATION HERE
}
});
通过这种方式,您将能够同时处理大量图像的动画,因为手机将在不同的计算线程中执行代码。
您也可以使用AsyncTask(将类添加到您的活动类中):
private class doAnimation extends AsyncTask<ImageView, Void, Void>{
@Override
protected Void doInBackground(ImageView... image) {
image.startAnimation(animation);
return null;
}
}
并使用以下方式调用它:
new doAnimation().execute(image1);
new doAnimation().execute(image2);
new doAnimation().execute(image3);
...