动画Animation
动画有两种分类:
1.补间动画:对View控件进行变换(平移,缩放,旋转,透明度)来产生动画效果。
2.帧动画:由多帧图片,通过连续变化产生动画效果。
一.帧动画 Frame
帧动画有两种实现方式:一种是静态实现,一种是动态实现
静态通过建一个xml,调用<animation-list>,利用item将一帧帧的画面逐个添加,
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@mipmap/a2" android:duration="100"/>在Main中,把imageView的控件背景资源获取出来,转换成AnimationDrawable类型<item android:drawable="@mipmap/a20" android:duration="100"/> </animation-list>
AnimationDrawable drawable=(AnimationDrawable)imageview.getBackground();
drawable.start()//.start()开始运行。
另一种通过resource方法把图片加载到动画对象中
首先,AnimationDrawable animation=new AnimationDrawable();
利用for循环
for(int i=0;i<***.length;i++){
//参数1:图片名;参数2:图片所在在文件夹;参数3:当前包名;
int id=getResources().getIdentifier("a"+i,"**文件夹名**",getPackageName());
//根据图片id把图片转化成Drawable对象;
Drawable frame=getResources().getDrawable(id);
//把当前图片添加到AnimationDrawable对象中,并设置显示时间;
animation.addFrame(frame,100);}
//设置播放模式是否是训话播放;
animation.setOnShot(false);
//设置本类将要显示的这个动画;
imageview.setImageDrawable(animation);
//启动动画
animation.start();
二.补间动画 Tween
补间动画有五类:1.透明度动画 AlphaAnimation
2.缩放动画 ScaleAnimation
3.平移动画 TranslateAnimation
4.旋转动画 RotateAnimation
5.组合动画 AnimationSet
1.AlphaAnimation
同样可以有两种方式调用;
a.在代码中实现:
//初始化动画,参数分别是:透明度从多少开始,到多少
AlphaAnimation alphaAnimation=new AlphaAnimation(1,0);//alpha是不透明的意思,所以1 代表不透明
//设置动画运行的时间
alphaAnimation.setDuration(2000);//毫秒
//启动动画
alphaAnimationg.start();
//把动画绑定个View
imageview.setAnimation(alphaAnimation);
b.在xml中实现
新建一个xml文件
<alpha xmlns:android="http://schemas.android.con/apk/res/android"
andorid:duration="2000"
android:fromAlpha="1"
android:toAlpha="0"/>
在代码中
Animation anim=AnimationUtils.loadAnimation(this,R.anim.anim_alpha);
imageview.setAnimation(anim);
2.ScaleAnimation
代码中实现
//初始化动画,参数:1.x从多少开始缩放;2.x缩放到几倍;3.y从多少开始缩放;4.y缩放到几倍
//5.x相对自己x的多少倍开始缩放;6.相对自己x轴的倍数
//7.y相对自己y的多少倍开始缩放;8.相对自己y轴的倍数
ScaleAnimation animation=new ScaleAnimation(0f,2f,0f,2f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
在xml中实现
同上,新建xml
<scale xmlns:android:"http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fromXScale="0"
android:fromYScale="0"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="100%"
android:toYScale="100%"
</scale>
代码中
ScaleAnmation animation=AnimationUtils.loadAniamtion(this,R.anim.scale_main);
imageview .setAnimation(animation);
3.RotateAnimation 旋转动画效果
同上,RotateAnimation中的六个参数分别是:1.初始角度;2.到多少角度为止;
3.相对自己x轴的第四个参数倍;5.相对自己y轴的第六个参数倍
4.Translation 线性移动动画
TranslateAnimation中的四个参数的意思是
参数1.x从多少开始平移;2.x平移到多少;3.y从多少开始平移;4.y平移到多少
5.SetAnimation 多种动画的组合
主要在xml中实现
利用<set></set>将需要的动画效果在这里进行组合
<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="5000" android:fillAfter="true" android:repeatMode="reverse" > <rotate android:fromDegrees="0" android:toDegrees="360" android:pivotX="0.5" android:pivotY="0.5" android:repeatCount="infinite"/> <translate android:fromXDelta="0" android:toXDelta="100%" android:fromYDelta="0" android:toYDelta="100%" android:repeatCount="infinite"/> <scale android:fromXScale="0" android:fromYScale="0" android:toXScale="1" android:toYScale="1" android:pivotX="0.5" android:pivotY="0.5" android:repeatCount="infinite"/> <alpha android:fromAlpha="1" android:toAlpha="0" android:repeatCount="infinite"/> </set>
此外,还有Intent跳转动画,同样是通过xml实现,
先做出页面进入和界面退出的两个xml文件,
用方法
overridePendingTransition(R.anim.***页面进入动画***,R.anim.***页面退出的动画***);