17

我处于想要从动态图像列表中显示动画的情况。我想为此目的使用 AnimationDrawable,但不幸的是我被卡住了...... :(我的代码是

ImageView globe = (ImageView) findViewById(R.id.globe);

AnimationDrawable animation = new AnimationDrawable();
animation.setOneShot(true);

Resources res = this.getResources();

while (from <= to) {
    String name = "globe_" + String.format("%03d", from);
    int globeId = res.getIdentifier(name, "drawable",
            this.getPackageName());
    animation.addFrame(res.getDrawable(globeId), 200);
    from++;
}

globe.setBackgroundDrawable(animation);
globe.post(new Runnable(){
        @Override
        public void run() {
            animation.start();
        }
});
4

2 回答 2

8

我只是animation.start()在循环之后做了并从可运行的函数中调用了该函数并且它工作了

while (from <= to) {
    String name = "globe_" + String.format("%03d", from);
    int globeId = res.getIdentifier(name, "drawable",
            this.getPackageName());

    animation.addFrame(res.getDrawable(globeId), 200);
    from++;
}

globe.setBackgroundDrawable(animation);

animation.start()
于 2012-09-20T10:38:48.103 回答
7

因此 Animation.addFrame(Drawable frame, int duration) 采用您可以从位图创建的可绘制对象。

如果您的图像列表是动态加载的:

List<Bitmap> images;
int duration = 200;    

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

试试这个,肯定可以的。

于 2012-04-14T06:16:21.947 回答