补间动画示例代码

* 从开始状态到结束状态的一个过渡动画
  * 平移
  * 透明
  * 旋转
  * 缩放

package com.example.tween;

 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;

public class MainActivity extends Activity {

   private ImageView  iv;
   private AlphaAnimation   a;
   private TranslateAnimation  t;
   private RotateAnimation  r;
   private ScaleAnimation   s;
   @Override

   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      iv = (ImageView) findViewById(R.id.iv);
   }

   /**
    * 透明度    
    * 第一个参数fromAlpha:动画起始时的透明度
    * 第二个参数toAlpha: 动画结束时的透明度
    */
   public void alpha(View v) {
      a = new AlphaAnimation(0, 1);
      // 设置动画的时间
      a.setDuration(500);
      // 设置动画的播放模式
      a.setRepeatMode(Animation.REVERSE);
      // 设置动画的重复次数
      a.setRepeatCount(4);
      // 开始播放动画
      iv.startAnimation(a);
   }

 
   /**

    * 位移动画
   * 参数1,参数3,参数5,参数7: 设置参照点的方式(相对自己)Animation.RELATIVE_TO_SELF 
    * 参数2:x轴起始移动的位置 (0表示原图位置左上角x轴的坐标)
    * 参数4:x轴停止移动的位置(2表示移动原图宽度的两倍)
    * 参数6:y轴起始移动的位置 (0表示原图位置左上角y轴的坐标) 
    * 参数8:y轴停止移动的位置(2表示移动原图高度的两倍)
    * TranslateAnimation tras = new TranslateAnimation(
    * Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2,
    * Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2); 
    */

   public void translate(View view) {
      t = new TranslateAnimation(0, 100, 0, 100);
      // 设置动画的时间
      t.setDuration(500);
      // 设置动画的播放模式
      t.setRepeatMode(Animation.REVERSE);
      // 设置动画的重复次数
      t.setRepeatCount(4);
      // 动画做完之后停在结束位置
      t.setFillAfter(true);
      // 开始播放动画
      iv.startAnimation(t);

   }


   /**
    * 旋转动画
    */

   public void rotate(View view) {
//    RotateAnimation r = new RotateAnimation(0, 270);
      /*
       * 参数1:旋转的起始角度
       * 参数2:旋转的终止角度
       * 参数3:旋转中心的x轴取值参照方式
       * 参数4:中心点x轴的取值(0.5f表示相对与原图的0.5倍)
       * 参数5:旋转中心的y轴取值参照方式
       * 参数6:中心点y轴的取值(0.5f表示相对与原图的0.5倍)
       */

      r = new RotateAnimation(360, 0,
      Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);
      r.setDuration(300);
      r.setRepeatCount(2);
      r.setRepeatMode(Animation.REVERSE);
      // 开始播放动画
      iv.startAnimation(r);
   }

   
   /**
    * 缩放
    */

   public void scale(View view){

      /*
       * 参数1:x方向起始大小(1f表示原图大小) 
       * 参数2:x方向终止大小(0.2f表示原图的0.2倍)
       * 参数3:y方向起始大小(1f表示原图大小) 
       * 参数4:y方向终止大小(0.2f表示原图的0.2倍) 
       * 参数5:缩放中心点x轴取值的参照方式
       * 参数6: 中心点x轴的取值(0.5f表示相对与原图的0.5倍) 
       * 参数7:缩放中心点y轴取值参照方式
       *  参数8:中心点y轴的取值(0.5f表示相对与原图的0.5倍)
       */

      s = new ScaleAnimation(1,10, 1, 100f,
            Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);
      // 设置显示时间长度
      s.setDuration(20);
      // 设置重复次数
      s.setRepeatCount(3);
      // 设置动画重复的模式
      s.setRepeatMode(Animation.REVERSE);
      // 在ImageView上播放动画
      iv.startAnimation(s);
   }

   /**
    * 动画的合集
    */

   public void set(View v){
      AnimationSet set = new AnimationSet(false);
      set.addAnimation(a);
      set.addAnimation(r);
      set.addAnimation(t);
      set.addAnimation(s);
      // 在ImageView上播放动画
      iv.startAnimation(set);
   }
}

 

转载于:https://www.cnblogs.com/loaderman/p/6421537.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中的补间动画是一种基于属性动画动画效果,它可以让视图在一段时间内平滑地从一种状态过渡到另一种状态。补间动画的实现方式比较简单,使用起来也比较灵活,可以用于实现各种动画效果。 补间动画可以对视图的位置、大小、透明度等属性进行动画效果的设置,常见的补间动画包括: 1. 透明度动画(AlphaAnimation):可以控制视图的透明度,让视图在一段时间内逐渐变得透明或不透明。 2. 位移动画(TranslateAnimation):可以控制视图在屏幕上的位置,让视图在一段时间内沿着指定的路径平移。 3. 缩放动画(ScaleAnimation):可以控制视图的大小,让视图在一段时间内逐渐变大或变小。 4. 旋转动画(RotateAnimation):可以控制视图的旋转角度,让视图在一段时间内沿着指定的轴线旋转。 使用补间动画需要先创建相应的动画对象,然后将动画对象与需要执行动画的视图进行绑定,最后启动动画。可以使用XML文件或代码来创建补间动画,下面是一个简单的代码示例: ```java // 创建透明度动画对象 AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f); // 设置动画持续时间 alphaAnimation.setDuration(1000); // 设置动画重复次数 alphaAnimation.setRepeatCount(Animation.INFINITE); // 设置动画模式 alphaAnimation.setRepeatMode(Animation.REVERSE); // 将动画对象与视图进行绑定 view.startAnimation(alphaAnimation); ``` 在这个示例中,我们创建了一个透明度动画对象,设置了动画持续时间为1000毫秒,重复次数为无限次,模式为反转模式,然后将动画对象与视图进行绑定,最后启动动画。这样就可以让视图在一段时间内逐渐变得透明或不透明,并且重复执行动画效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值