下面是XML的代码:
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/minepic" />
在这里,minepic是一个GIF动画图像,但运行的应用程序后,它只是显示静态图像。
是否有关于如何在动画android应用的.gif图片的任何解决方案?
为了让这里精确和完整的答案是你需要做逐步的东西:
你需要有不同的.png
图像将作为您的动画帧。 在拯救他们res/drawable
文件夹。
创建anim.xml
文件res/drawable
文件夹下面的内容:
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/image_3" android:duration="250" /> <item android:drawable="@drawable/image_2" android:duration="250" /> <item android:drawable="@drawable/image_1" android:duration="250" /> <item android:drawable="@drawable/image" android:duration="250" /> </animation-list>
在布局xml
中要显示的动画文件:
//... <ImageView android:id="@+id/iv_animation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:contentDescription="Animation" /> //...
在它装载布局xml文件并调用Java文件setContentView
:
//... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ImageView animImageView = (ImageView) findViewById(R.id.iv_animation); animImageView.setBackgroundResource(R.drawable.anim); animImageView.post(new Runnable() { @Override public void run() { AnimationDrawable frameAnimation = (AnimationDrawable) animImageView.getBackground(); frameAnimation.start(); } }); // ... other code ... } // ...
为了停止动画,你可以调用.stop()
在AnimationDrawable
。 有关可用方法的详细信息,你可以看到AnimationDrawable文档。 希望它可以帮助别人。
我不建议使用Movie
或WebView
类,但ImageView
,而不是与源绘制设置为animation-list
。 请看例子( mydrawable.xml
):
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/image_1" android:duration="100" />
<item android:drawable="@drawable/image_2" android:duration="100" />
<item android:drawable="@drawable/image_3" android:duration="100" />
</animation-list>
// in your layout : <ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_drawable" />
很显然,你必须使用此解决方案之前,你切到.gif注意单独的图像。
据我了解,你的GIF图片是不动的,所以这是原生的Android的行为,如果你把GIF就像一个静态图片。 对我来说,最好的解决办法(不是推倒重来!)是开源库gitDrawable 。 检查他们的自述,一切都非常简单:添加依赖关系摇篮和使用(XML或代码)。 在Java中使用示例:
GifDrawable gifFromResource = new GifDrawable( getResources(), R.drawable.anim );
And i think this is the one way of solution by writing the anim-space.xml
In which the slices of the image are added to the items one by one and setting that xml to the imageview of our layout xml.
http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html
在这个开发商将其链接被明确定义。
嗯,我能使用动画这个简单的代码的Android图片:
canvas.drawColor(Color.WHITE);
super.onDraw(canvas);
long now=android.os.SystemClock.uptimeMillis();
System.out.println("now="+now);
if (moviestart == 0) { // first time
moviestart = now;
}
System.out.println("\tmoviestart="+moviestart);
int relTime = (int)((now - moviestart) % movie.duration()) ;
System.out.println("time="+relTime+"\treltime="+movie.duration());
movie.setTime(relTime);
movie.draw(canvas,this.getWidth()/2-20,this.getHeight()/2-40);
this.invalidate();
}
它是使用movieview容易实现
或者我,我可以给你一个教程这个东西
这不是要使用的线程(即View.post(新的Runnable)),因为该视图可能会在可绘制将要画的时间已经改变了(一个案例是使用上的ListView动画图像包含不同的背景图片的商品)好习惯,这可能会导致一个ClassCastException如果ImageView的,由线程运行的时候,有一个背景,是不是动画资源。
ImageView loadingImg = (ImageView)v.findViewById(R.id.image);
loadingImg.setBackgroundResource(R.drawable.progressdialog);
loadingImg.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
public void onViewAttachedToWindow(View v) {
AnimationDrawable loadingAnimation = (AnimationDrawable) v.getBackground();
loadingAnimation.start();
}
@Override
public void onViewDetachedFromWindow(View v) {
}
});
所示实施例在这里