安卓动画学习 --帧动画
- 这篇来看看帧动画
- 他主要是通过播放一系列的图片来达到视觉上的动画效果
帧动画实现方法
xml实现
- res/drawable下新建xml文件
<animation-list android:id="@+id/selected" android:oneshot="false">
<item android:drawable="@drawable/wheel0" android:duration="50" />
<item android:drawable="@drawable/wheel1" android:duration="50" />
<item android:drawable="@drawable/wheel2" android:duration="50" />
<item android:drawable="@drawable/wheel3" android:duration="50" />
<item android:drawable="@drawable/wheel4" android:duration="50" />
<item android:drawable="@drawable/wheel5" android:duration="50" />
</animation-list>
- 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() | 在当前帧停止 |