1. 注意:View动画改变的只是显示,并不能在新的位置响应事件。
同理,有时候会出现动画完成后View无法隐藏的现象,即setVisibility(View.GONE)失效,这时只需
调用view.clearAnimation()清除View动画即可解决问题。
2. 利用XML文件使用View动画(路径 //res/anim/animation_demo.xml)
(2.1)在XML文件中定义View动画
标签1 <set> 动画集合 ,有个默认的加速减速插值器@android:anim/accelerate_decelerate_interpolator
标签2 <alpha> 透明度动画
标签3 <scale> 缩放动画 , android:pivotX ——缩放轴点的x坐标,同理还有android:pivotY, 默认轴点为View的中心点。
标签4 <rotate> 旋转动画, android:pivotX ——旋转轴点的x坐标,同理还有android:pivotY, 默认轴点为View的中心点。
标签5 <translate> 平移动画
常用属性:android:duration ——动画持续时间;
android:fillAfter —— 动画结束后View是否停留在结束位置,true 表示停留。
(2.2)在代码里使用XML中定义好的动画:
Animation animation = AnimationUtils.loadAnimation(this, R.anim.animation_demo);
view.startAnimation(animation);
3. 在代码里直接使用View动画:
示例:
AlphaAnimation animation = new AlphaAnimation(0,1);
animation.setDuration(1000);
view.startAnimation(animation);
动画集合示例:
AnimationSet set = new AnimationSet(true);
set.setDuration(1000);
AlphaAnimation animation1 = new AlphaAnimation(0,1);
animation1.setDuration(1000);
TranslateAnimation animation2 = new TranslateAnimation (0,100, 0, 200);
animation2.setDuration(1000);
set.addAnimation(animation1);
set.addAnimation(animation2);
view.startAnimation(set);
4. View动画的特殊使用场景:
(4.1)LayoutAnimation
为ViewGroup指定一个动画,当它的子元素出场时就会带有这种动画效果。
(4.1.1)利用XML文件定义 (路径 //res/anim/animation_layout.xml)
<layoutAnimation
xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="0.5"
android:animationOrder="normal"
android:animation="@anim/anim_item"/>
接着在anim文件夹下定义名为anim_item的具体动画文件
最后在ViewGroup的XML定义中增加属性:android:layoutAnimation="@anim/animation_layout"
(4.1.2)直接在代码中控制
Animation anim = AnimationUtils.loadAnimation(this, R.anim.anim_item);
LayoutAnimationController con = new LayoutAnimationController(anim);
con.setDelay(0.5f);
con.setOrder(LayoutAnimationController.ORDER_NORMAL);
ViewGroup.setLayoutAnimation(con);
(4.2) Activity切换效果
Activity具有默认的切换效果,但这个效果可以是我们自定义的,主要使用overridePendingTransition(int enterAnim, int exitAnim)这个方法;
这个方法必须在startActivity(Intent)或者finish()方法之后被调用才能生效。
两个参数: enterAnim ——Activity打开时所需的动画资源id;
exitAnim ——Activity暂停时所需的动画资源id;
5. View动画的监听回调:
animation.setAnimationListener(new Animation.AnimationListener(){
@Override
public void onAnimationStart(Animation animation){
//动画开始时
}
@Override
public void onAnimationEnd(Animation animation){
//动画结束时
}
@Override
public void onAnimationRepeat(Animation animation){
//动画重复时
}
});