逐个动画单个图像

时间:2014-01-17 04:21:16

标签: java android animation android-animation

我有一张图片“joke.jpg” enter image description here

我想逐帧制作动画。我已经能够使用不同帧的不同图像使用帧动画进行动画处理。

但我想逐个动画这个图像。 此图片的总大小为2400 * 320。 所以基本上我的目的是将这个图像分成5帧并为其设置动画

3 个答案:

答案 0 :(得分:0)

您可以使用onWindowFocusChanged()方法执行此操作。所以,在这种方法中你可以这样做:

ImageView img = (ImageView)findViewById(R.id.some layout);
AnimationDrawable frameAnimation = (AnimationDrawable)img.getDrawable();
frameAnimation.setCallback(img);
frameAnimation.setVisible(true, true);
frameAnimation.start();

在xml布局中,您可以使用:

<animation-list   android:id="@+id/my_animation" android:oneshot="false" 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/frame1" android:duration="150" />
    <item android:drawable="@drawable/frame2" android:duration="150" />

</animation-list>  

字体:Starting Frame-By-Frame Animation

答案 1 :(得分:0)

我的问题解决了。

我做了类似跟随

的事情
/***************************** onCreate() ***********************************/
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imgJoke = (ImageView) findViewById(R.id.img_joke);


        AnimationDrawable animation = new AnimationDrawable();


        Bitmap bmpJoke = BitmapFactory.decodeResource(getResources(), R.drawable.joke);
        splitImage(bmpJoke, 5);

        int duration = 200;    

        for(Bitmap image: chunkedImages){
            BitmapDrawable frame = new BitmapDrawable(image);
            animation.setOneShot(false);
            animation.addFrame(frame, duration);
        }


        imgJoke.setBackgroundDrawable(animation);

        animation.start();
}
/*********** Method to split a single image ****************************/
private void splitImage(Bitmap bitmap, int chunkNumbers) {


        // For height and width of the small image chunks
        int chunkHeight, chunkWidth;

        // To store all the small image chunks in bitmap format in this list
        chunkedImages = new ArrayList<Bitmap>(chunkNumbers);

        Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap,
        bitmap.getWidth(), bitmap.getHeight(), true);

        chunkHeight = bitmap.getHeight();
        chunkWidth = bitmap.getWidth() / chunkNumbers;

        // xCoord and yCoord are the pixel positions of the image chunks
        int yCoord = 0;

        int xCoord = 0;
        for (int y = 0; y < chunkNumbers; y++) {
            chunkedImages.add(Bitmap.createBitmap(scaledBitmap, xCoord, yCoord,
                    chunkWidth, chunkHeight));
            xCoord += chunkWidth;
        }
        yCoord += chunkHeight;

}

其中ArrayList<Bitmap> chunkedImages;全局声明

答案 2 :(得分:0)

看起来你正在开发一款游戏?

这是一个精灵动画示例:

http://obviam.net/index.php/sprite-animation-with-android/