在Android中动画可以分为以下的几种:
帧动画:就像flash一样,将图像一帧一帧进行切换
例如美团加载数据时的效果
补间动画:补充两个关键帧之间的动画。将图画进行移动、缩放、透明、组合,实现的功能比较强大,但也存在不足
例如购物软件,点击购买,商品会做一个抛物线的样子弹出
属性动画:用于弥补补间动画的不足(只能将动画添加到一个View当中)
包含的类:ValueAnimation、ObjectAnimation(常用)、
ViewPropertyAnimation
帧动画
模拟顺丰快递小哥加载信息时的动画
在drawable目录下创建一个animation-list节点,并配置动画项
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/app_loading0" android:duration="200"/>
<item android:drawable="@drawable/app_loading1" android:duration="200"/>
</animation-list>
oneshot属性:是否值播放一次
duration属性:这张图片播放多久
将文件设置到指定的View的背景上,获取ImageView背景转换成动画
这里用到的操控动画的类为 AnimationDrawable 对象为 animationDrawable
实例化方式: animationDrawable = (AnimationDrawable) iv.getBackground();
private void initAnimation() {
//将刚才设置好的帧动画的文件设置到ImageView的背景上
iv.setBackgroundResource(R.drawable.fram);
//实例化动画操作的对象
animationDrawable = (AnimationDrawable) iv.getBackground();
}
开始动画,和停止动画
//开始动画
animationDrawable.start();
//停止动画
animationDrawable.stop();
这两个操作可以放到一个按钮中进行实现
方法二:
当然这里也可以动态获取 animationDrawable 对象
这样我们就不通过animationDrawable = (AnimationDrawable) iv.getBackground();获取对象
public void initAnimation() {
//通过drawable得到animationDrawable对象
animationDrawable = (AnimationDrawable) getResources().getDrawable(R.drawable.frame);
//设置ImageView背景
iv.setBackgroundDrawable(animationDrawable);
}
只有initAnimation()这一个方法改变,其余不变
帧动画其他方法