Android 本地资源通过animation生成gif动态效果
由于通过直接加载Ps生成的gif存在失真情况,gif在ps中生成至于256原色,所以转化成gif格式文件后在客户端展示和网页中展示效果特别差,展示渐变带有半透明特效的样式特别难看。由于在andriod里可以逐帧的播放图片,所以把每一帧切图直接放到客户端资源文件中,产生一种动态的效果,准备好几张连续的图片,然后在于源程序res文件夹下建立anim文件夹,然后新建一个XML:注意此文件必须放到drawable中,不是anim文件夹。
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item android:drawable="@drawable/t0000" android:duration="50" />
<item android:drawable="@drawable/t0001" android:duration="50" />
<item android:drawable="@drawable/t0002" android:duration="50" />
<item android:drawable="@drawable/t0003" android:duration="50" />
<item android:drawable="@drawable/t0004" android:duration="50" />
<item android:drawable="@drawable/t0005" android:duration="50" />
…………
<item android:drawable="@drawable/t0059" android:duration="50" />
</animation-list>
其中t0000,t0001,t0002等是加入的图片的名称。因为此处我需要一个循环的转圈并且周围阴影渐变效果,大概是3秒钟,即3000ms 一共有60张图,所以每张图展示50ms
在窗体里面放置一个ImageView控件,并在代码中编写:
_imageView1 =(ImageView)findViewById(R.id.imageView1);//放置的ImageView控件
//设置动画背景
R.anim.wait_anim就是上一步准备的动画描述文件的资源名
//获得动画对象
_animaition = (AnimationDrawable)_imageView1.getBackground();
最后,就可以启动动画了,代码如下:
//是否仅仅启动一次?
_animaition.setOneShot(false);
if(_animaition.isRunning())//是否正在运行?
{
_animaition.stop();//停止
}
_animaition.start();//启动
此处可以在按钮中控制启动