动画
Tween动画:
通过对 View 的内容进行一系列的图形变换 (包括平移、缩放、旋转、改变透明度)来实现动画效果。动画效果的定义可以采用XML来做也可以采用编码来做。Tween动画有4种类型:
动画的类型
Xml定义动画使用的配置节点
编码定义动画使用的类
渐变透明度动画效果
<alpha/>
AlphaAnimation
渐变尺寸缩放动画效果
<scale/>
ScaleAnimation
画面位置移动动画效果
<translate/>
TranslateAnimation
画面旋转动画效果
<rotate/>
RotateAnimation
通过代码的形式来实现动画:
public class DemoActivity extends Activity {
AnimationDrawable animationDrawable;
ImageView iv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
iv = (ImageView) this.findViewById(R.id.iv);//找到ImageView就是要实行动画的图片控件
//动画的综合.可以把多种动画综合起来显示.单个动画不需要这个.
AnimationSet set = new AnimationSet(false);
//渐变透明动画
AlphaAnimation aa = new AlphaAnimation(0.0f, 1.0f);
aa.setDuration(5000);//动画的显示时间
//尺寸缩放的动画.可以从一个点扩大到一个图片的效果
ScaleAnimation sa = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f);
sa.setDuration(5000);
//位置移动的动画.可以水平和垂直方向同时移动
TranslateAnimation ta = new TranslateAnimation(10.0f, 60.0f, 10.0f, 60.0f);
ta.setDuration(5000);
//旋转动画.可以围绕一个点开始旋转.
RotateAnimation ra = new RotateAnimation(0, 90);
ra.setDuration(5000);
//通过set来添加动画.添加n个动画就是n个动画同时运行.注意要把上面的单独的动画注释掉.
set.addAnimation(ra);
set.addAnimation(ta);
set.addAnimation(sa);
set.addAnimation(aa);
//通过加载布局文件来实现动画效果.
Animation anim = AnimationUtils.loadAnimation(this, R.anim.alphaanim);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.scaleanim);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.translateanim);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.rotateanim);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.set);
//把一个Tween动画应用到某个控件上
iv.setAnimation(anim);
//下面这段代码是把一个Frame动画布置到控件上并开始播放
iv.setBackgroundResource(R.drawable.hit);
animationDrawable = (AnimationDrawable) iv.getBackground();
animationDrawable.start();
}
//由于Frame动画是需要点击一下才能播放的.下面这段代码就是给Frame动画设置一个点击事件
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction()== MotionEvent.ACTION_DOWN){
animationDrawable.start();
}
return super.onTouchEvent(event);
}
}
通过布局文件的形式来实现动画:
在res下新建一个anim的文件夹.
在这个文件夹下新建动画文件.先选择Tween动画.再选择具体的动画效果.名字可以随便起.
渐变动画
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="5000"
>
</alpha>
缩放动画
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0.0"
android:toXScale="2.0"
android:fromYScale="0.0"
android:toYScale="2.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="5000"
>
</scale>
位移动画
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0.0"
android:toXDelta="100%p"
android:fromYDelta="0.0"
android:toYDelta="100%p"
android:duration="5000"
>
</translate>
旋转动画
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0.0"
android:toDegrees="180.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="5000"
>
</rotate>
动画的综合设置
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<rotate
android:fromDegrees="0.0"
android:toDegrees="180.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="5000"
>
</rotate>
<scale
android:fromXScale="0.0"
android:toXScale="2.0"
android:fromYScale="0.0"
android:toYScale="2.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="5000"
>
</scale>
</set>
在配置文件中设置好的动画可以直接在主Activity中引用:
Animation anim = AnimationUtils.loadAnimation(this, R.anim.rotateanim);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.set);
Frame动画:
即顺序播放事先做好的图像,跟放胶片电影类似。开发步骤:
把准备好的图片放进项目res/ drawable下。
在drawable下新建一个xml文件.类型选择就是drawable.
<?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/girl_1" android:duration="200" />
<item android:drawable="@drawable/girl_2" android:duration="200" />
<item android:drawable="@drawable/girl_3" android:duration="200" />
<item android:drawable="@drawable/girl_4" android:duration="200" />
<item android:drawable="@drawable/girl_5" android:duration="200" />
<item android:drawable="@drawable/girl_6" android:duration="200" />
<item android:drawable="@drawable/girl_7" android:duration="1000" />
<item android:drawable="@drawable/girl_8" android:duration="200" />
<item android:drawable="@drawable/girl_9" android:duration="200" />
<item android:drawable="@drawable/girl_10" android:duration="200" />
<item android:drawable="@drawable/girl_11" android:duration="200" />
</animation-list>
设置好布局文件后在主Activity中把设置好的布局文件显示到控件上
//下面这段代码是把一个Frame动画布置到控件上并开始播放
iv.setBackgroundResource(R.drawable.hit);
animationDrawable = (AnimationDrawable) iv.getBackground();
animationDrawable.start();
}
//由于Frame动画是需要点击一下才能播放的.下面这段代码就是给Frame动画设置一个点击事件
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction()== MotionEvent.ACTION_DOWN){
animationDrawable.start();
}
return super.onTouchEvent(event);
}