Android动画二:View动画

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){

//动画重复时

}

});


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值