android tween动画主要有4种,分别为 透明 比例缩放 移动 和转动
两种创建方式如下:
1. 代码里面创建 动画:
透明:
(初次使用,主要明白其大致流程和参数的含义)具体参见SDK文档
//透明动画
Animation alphaAnimation = new AlphaAnimation(1,0);
alphaAnimation.setDuration(2000);
// -1 表示无限重复
alphaAnimation.setRepeatCount(-1);
// 设置动画
imageView.setAnimation(alphaAnimation);
alphaAnimation.start();
比例:
//相当于放大了 3 倍
//关键是参数的含义需要理解
Animation scaleAnimation = new ScaleAnimation(1,3,1,3);
//Animation scaleAnimation = new ScaleAnimation(1, 3, 1, 3,Animation.ZORDER_BOTTOM, 1,Animation.ZORDER_NORMAL, 1);
scaleAnimation.setDuration(3000);
scaleAnimation.setRepeatCount(-1);
imageView.setAnimation(scaleAnimation);
scaleAnimation.startNow();
移动:
// 移动动画
Animation translateAnimation = new TranslateAnimation(0, 200, 0, 200);
translateAnimation.setDuration(2000);
translateAnimation.setRepeatCount(-1);
imageView.setAnimation(translateAnimation);
translateAnimation.startNow();
旋转:
//旋转动画
/*
* 后两个参数可以理解为 旋转的 中心点的坐标
*/
Animation rorateAnimation = new RotateAnimation(0, 360, 100,100);
rorateAnimation.setDuration(3000);
rorateAnimation.setRepeatCount(-1);
imageView.setAnimation(rorateAnimation);
rorateAnimation.startNow();
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
在xml文件里面一般的创建方式:
以 缩放为例子:(在res/anim下面建立scale.xml)
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="1.0"
android:toXScale="0.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="50%" //X轴缩放的位置
android:pivotY="50%"
android:duration="2000">
</scale>
代码里面:
Animation animation = AnimationUtils.loadAnimation(this,R.anim.scale);
imageView.starttAnimation(animation);
** 注意 这代码里面 和上面用代码创建的区别
其余三种 动画的创建方式类似.
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
如果动画中的图像变换比较有规律时,可以才用自动生成中间图像的方式生成动画,例如图像的移动、旋转、缩放、透明度渐变、正方形变圆形等,这些图像变化过程中的图像都可以根据一定的算法自动生成,我们只需要指定动画的第一帧和最后一帧图像即可,这种自动生成中间图像的动画就是补间动画。
Android SDK提供了4种补间动画效果:移动、缩放、旋转和透明度。如果要实现更复杂的补间动画需要开发人员自己编码。补间动画文件放在res/anim/资源下。
1.移动动画 TranslateAnimation:
<?xml version="1.0" encoding="utf-8"?><!-- 移动动画 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
<translate android:fromXDelta="0" android:fromYDelta="-100%"
android:toXDelta="0" android:toYDelta="0" android:duration="1000"
android:repeatCount="-1" android:repeatMode="reverse"/>
</set>
interpolator:表示动画渲染器(通用)。有三个值accelerate_interpolator(动画加速器)、decelerate_interpolator(动画减速器)、accelerate_decelerate_interpolator(动画加速减速器)。加速器是动画开始速度慢,越到后来速度越快,其它加速器类似理解。
fromXDelta:起始X坐标
fromYDelta:起始Y坐标
toXDelta:目标X坐标
toYDelta:目标Y坐标
duration:动画持续时间(通用) 单位毫秒
repeatCount:动画重复次数(通用) 大于零为次数,-1或infinite为无限次
repeatMode:动画重复模式(通用) restart:正常重复 reverse:方向相反重复
2.旋转动画 RotateAnimation:
<?xml version="1.0" encoding="utf-8"?><!-- 旋转动画 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
<rotate android:fromDegrees="0" android:toDegrees="360"
android:pivotX="50%" android:pivotY="50%" android:repeatCount="-1"
android:repeatMode="reverse" android:duration="2000"/>
</set>
fromDegrees:开始角度
toDegrees:结束角度
pivotX:表示沿X轴方向旋转的支点位置,如果该值为50%,则支点在沿X轴的中心位置
pivotY:表示沿Y轴方向旋转的支点位置,如果该值为50%,则支点在沿Y轴的中心位置
3.缩放动画 ScaleAnimation:
<?xml version="1.0" encoding="utf-8"?><!-- 缩放动画 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
<scale android:fromXScale="0.2" android:fromYScale="0.2"
android:toXScale="1.0" android:toYScale="1.0" android:pivotX="50%"
android:pivotY="50%" android:duration="1000" android:repeatCount="-1"
android:repeatMode="reverse" />
</set>
fromXScale:起始X方向缩放比例 0.0最小 1.0原大小 2.0两倍大小
fromYScale:起始Y方向缩放比例
toXScale:结束X方向缩放比例
toYScale:结束Y方向缩放比例
4.透明度动画 AlphaAnimation:
<?xml version="1.0" encoding="utf-8"?><!-- 透明动画 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="2000" android:repeatCount="-1" android:repeatMode="reverse" />
</set>
fromAlpha:起始透明度 0.0~1.0 0.0完全透明 1.0完全不透明
toAlpha:结束透明度
以上四种动画可以自由组合成需要的动画,如下即图像缩放同时透明度也改变
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
<scale android:fromXScale="0.2" android:fromYScale="0.2"
android:toXScale="1.0" android:toYScale="1.0" android:pivotX="50%"
android:pivotY="50%" android:duration="1000" android:repeatCount="-1"
android:repeatMode="reverse" />
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="2000" android:repeatCount="-1" android:repeatMode="reverse" />
</set>
装载补间动画文件需要使用AnimationUtils.loadAnimation()方法,如下:
Animation animation = AnimationUtils.loadAnimation(this,R.anim.test);
将补间动画应用到控件的方法有两种:
1.view.startAnimation(animation);
2.view.setAnimation(animation);
animation.start();
通过代码设置补间动画:
1.animation.setRepeatCount(Animation.INFINITE);设置循环显示
2.public TranslateAnimation(float fromXDelta , float from toXDelta ,float fromYDelta , float toYDelta); 移动动画
3.其他三种动画与上类似。
/---------------------------------------------------- 华丽的分割线————————————————————————————————/
1. 先在anim下面 或者 drawable下面 建立 frame_xxx.xml:
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false" > <item android:drawable="@drawable/ic_launcher" android:duration="500"/> <item android:drawable="@drawable/ic_sys_scan1" android:duration="500"/> <item android:drawable="@drawable/ic_sys_scan3" android:duration="500"/> <item android:drawable="@drawable/ic_sys_scan4" android:duration="500"/> <item android:drawable="@drawable/ic_sys_scan5" android:duration="500"/> <item android:drawable="@drawable/ic_sys_scan6" android:duration="500"/> <item android:drawable="@drawable/ic_sys_scan7" android:duration="500"/> <item android:drawable="@drawable/ic_sys_scan8" android:duration="500"/> <item android:drawable="@drawable/ic_sys_scan9" android:duration="500"/> </animation-list>
2. 设置imageview的属性:
<ImageView android:id="@+id/imageView" android:layout_width="100dip " android:layout_height="100dip " android:src="@drawable/frame_xxx" />这里 前面如果是放在anim文件夹下,直接换成
android:src="@anim/frame_xxx" 3.代码中进行使用:imageView = (ImageView) findViewById(R.id.imageView); mAnimationDrawable = (AnimationDrawable) imageView.getDrawable();
然后调用mAnimationDrawable.start()即可 注意: 在oncreate里面直接调用start()是看不见效果的 如果非要 ,则可以:其次使用View.post(Runnable)的方式: imageV.post(new Runnable(){ @Override public void run() { frameAnim.start(); } });
实现开始就动画