1

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

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

编辑:我应该更具体..

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

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

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

4

2 回答 2

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);
于 2013-07-27T16:25:52.033 回答
0

我会使用 Drawable 动画,但这并不重要。如果应用程序运行速度非常慢,您应该做的重要事情是使用以下代码使用不同的线程,例如:

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);
    ...
于 2013-07-27T11:04:23.223 回答