什么是创建Android动画的更好方法?

时间:2013-07-27 10:09:41

标签: android image animation view drawable

我正在尝试创建一个Android应用,其中包含许多(有时最多约200个)小图像,这些图像将被动画(重新定位和更改大小),一次大约20个。之后他们会保持不动。

我应该使用View类动画的简单解决方案还是应该使用Drawable动画?

编辑:我应该更具体..

有很多教程和很多不同的方法来做同样的事情。我正在寻找实现下一个场景的最佳方式:

假设我当前在屏幕上绘制了50个不同的小(30x30)图像。 我需要为它们设置动画,以便它们转换为不同的 DYNAMIC 位置。当他们移动时我需要上下调整图像的大小(如果从顶部看,我会得到一种跳跃效果)。 他们需要在特定的时间范围内移动。例如:第一张图像开始移动后,第二张图像会在最后一张图像开始后移动50毫秒,以此类推(波浪效果)...... 翻译完一组图像后,将形成另一组,但最后一组仍将在屏幕上显示。

所以我要问的是有关最佳方法的一些细节。例如:我应该为每个Image创建一个XML文件,还是应该只在代码中加载它们?我应该在应用程序启动时加载所有图像(可能有多达200个小图像,可能更多),还是可以根据需要加载它们?什么是最好的动画技术?这样的东西。

2 个答案:

答案 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);
    ...