我有一张图片“joke.jpg”
我想逐帧制作动画。我已经能够使用不同帧的不同图像使用帧动画进行动画处理。
但我想逐个动画这个图像。 此图片的总大小为2400 * 320。 所以基本上我的目的是将这个图像分成5帧并为其设置动画
答案 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>
答案 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)