1.res右键->新建Android Xml file,resource type选择帧动画Drawable,root element选择 第一个A:animation-list帧动画,file起个名字,
1-1:系统会自动在src目录下创建一个文件夹,名字是 drawable,xml文件 在此目录
2.
3.android:oneshot=”true” 动画执行一次oneshot
4.在布局文件中 src引入此 xml文件,android:src=”@drawable/名字”
5.在代码中播放
AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getDrawable();
//判断是否已经播放了
if (animationDrawable.isRunning()) {
//停止动画
animationDrawable.stop();
}
//重新开始播放
animationDrawable.start();
注: 动画播完了 实际上还在running 再点击播放没有反应
imageView.getDrawable()
6.没有在布局文件中关联xml资源,代码中关联
//给ImageView设置动画资源
imageView.setImageResource(R.drawable.frame_wifi);
AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getDrawable();
if (animationDrawable.isRunning()) {
animationDrawable.stop();
}
animationDrawable.start();
imageView.setImageResource(R.drawable.frame_wifi);
AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getDrawable();
1.透明 通过编码的方式
`/*
* 下面的代码只能在Android4.1以下执行
*/
// //从完全透明(不可见)到不透明(可见)
// AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
// alphaAnimation.setDuration(5000);//设置动画的执行时长
// //把动画设置给ImageView
// imageView.setAnimation(alphaAnimation);
// //开始执行动画
// alphaAnimation.start();
/*
* 以下代码全兼容
*/
// 从完全透明(不可见)到不透明(可见)
AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
alphaAnimation.setDuration(50);// 设置动画的执行时长
// 设置重复的次数(-1 代表无限循环)
alphaAnimation.setRepeatCount(Animation.INFINITE);
// 执行第二遍的时候从上一遍的末尾开始
alphaAnimation.setRepeatMode(Animation.REVERSE);
// 让iamgeView执行动画
imageView.startAnimation(alphaAnimation);`
通过动画文件(xml)的方式
在res/anim/创建补间动画资源文件(xml)
android:toAlpha="0"
android:duration="1000"
android:repeatCount="1"//总共执行的次数要+1
android:fillAfter="true"//执行后维持状态不变
android:repeatMode="restart"
>
android:fillAfter=”true”//执行后维持状态不变
在代码中将动画资源文件转换为Animation动画,然后再使用
//把补间动画资源文件转换为Animation对象,然后再使用
Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha_anim);
//让iamgeView执行动画
imageView.startAnimation(animation);
2.平移
`public void translate(View view) {
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, -100, 200);
translateAnimation.setDuration(5000);
translateAnimation.setFillAfter(true);
translateAnimation.setRepeatCount(Animation.INFINITE);
translateAnimation.setRepeatMode(Animation.REVERSE);
imageView.startAnimation(translateAnimation);
}`
注: 1点击事件只会在原来 图片位置
2.整个布局leanarlayout 也是view 也可以设置动画
3.缩放动画
`public void scale(View view) {
ScaleAnimation scaleAnimation = new ScaleAnimation(1, 10, 1, 10, Animation.RELATIVE_TO_SELF, 0.4f, Animation.RELATIVE_TO_SELF, 0.3f);
scaleAnimation.setDuration(1000);
scaleAnimation.setRepeatCount(5);
imageView.startAnimation(scaleAnimation);
}`
4.旋转动画
`public void rotate(View view) {
// 不倒翁效果
// RotateAnimation rotateAnimation = new RotateAnimation(-30, 30,
// Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 1);
// 摆钟效果
// RotateAnimation rotateAnimation = new RotateAnimation(-30, 30,
// Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0);
RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(100);
rotateAnimation.setRepeatCount(Animation.INFINITE);
rotateAnimation.setRepeatMode(Animation.RESTART);
imageView.startAnimation(rotateAnimation);
}`
// 同时执行多个动画
public void set(View view){
ScaleAnimation scaleAnimation = new ScaleAnimation(0.5f, 1.5f, 0.5f, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.setDuration(5000);
scaleAnimation.setRepeatCount(Animation.INFINITE);
scaleAnimation.setRepeatMode(Animation.REVERSE);
RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(5000);
rotateAnimation.setRepeatCount(Animation.INFINITE);
rotateAnimation.setRepeatMode(Animation.RESTART);
//创建动画集
AnimationSet animationSet = new AnimationSet(false);
//添加动画
animationSet.addAnimation(scaleAnimation);
animationSet.addAnimation(rotateAnimation);
imageView.startAnimation(animationSet);
}
透明 代码实现方式
/*
参数3:要修改的值,可变参数
*/
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(imageView, “alpha”, 0,1);
//设置延时
objectAnimator.setDuration(2000);
objectAnimator.setRepeatCount(ObjectAnimator.INFINITE);
objectAnimator.setRepeatMode(ObjectAnimator.REVERSE);
objectAnimator.start();
布局文件实现方式animator
`* 在res/animator/下创建动画资源(xml)