欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android动画之帧动画解析

程序员文章站 2022-09-02 23:20:09
android动画之帧动画解析 他主要是通过播放一系列的图片来达到视觉上的动画效果 帧动画实现方法 xml实现 res/drawable下新建xml文件...

android动画之帧动画解析

他主要是通过播放一系列的图片来达到视觉上的动画效果

帧动画实现方法

xml实现

res/drawable下新建xml文件

 
 
 
 
 
 
 
 

xml属性

animation-list结点属性

 android:oneshot //如果为true,则动画将只运行一次然后停止。 
 android:variablepadding //如果为true,则允许绘制的填充根据所选的当前状态进行更改。 
 android:visible //提供drawable的初始可见性状态; 默认值是false。 

item 属性

··· android:drawable //图片资源 android:duration //显示此帧的时间量(以毫秒为单位)。 ···

代码中引用

 imageview img =(imageview)findviewbyid(r.id.spinning_wheel_image); 
 img.setbackgroundresource(r.drawable.spin_animation); 
 animationdrawable frameanimation =(animationdrawable)img.getbackground(); 

 frameanimation.start();
 
 -----或者----
 
 animationdrawable animationdrawable = (animationdrawable) getresources().getdrawable(  
 r.drawable.frame_anim);  
imageview.setbackground(animationdrawable);  
frameanimation.start();
 

代码实现

animationdrawable animationdrawable = new animationdrawable();  
 // 为animationdrawable添加动画帧  
animationdrawable.addframe(  
  getresources().getdrawable(r.drawable.img00), 50);  
animationdrawable.addframe(  
  getresources().getdrawable(r.drawable.img01), 50); 
imageview.setbackground(animationdrawable);  
animationdrawable.start();

第一个为图片资源,第二个为当前图片显示的时间

相关方法

方法名 用法
int getduration(int i) 获取i序号的图片显示时间
drawable getframe(int index) 获取index序号的图片
int getnumberofframes() 获取数目
boolean isoneshot() 是否单次显示
boolean isrunning() 是否正在播放
void setoneshot(boolean oneshot) 设置是否单次显示
boolean setvisible(boolean visible, boolean restart) 设置初始状态是否可见
void start() 从0开始
void stop() 在当前帧停止