android animation的两种应用实例

方法一:在xml中定义动画:

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

 <!--
  Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效
  
  Alpha:渐变透明度动画效果
  Scale:渐变尺寸伸缩动画效果
  Translate:画面转换位置移动动画效果
  Rotate:画面旋转动画效果
  
  Tween Animation 通用属性[类型] 功能 
   Duration[long] 属性为动画持续时间 时间以毫秒为单位
   fillAfter [boolean] 当设置为true ,该动画转化在动画结束后被应用
   fillBefore[boolean] 当设置为true ,该动画转化在动画开始前被应用
   
   interpolator 指定一个动画的插入器 有一些常见的插入器
   accelerate_decelerate_interpolator
   加速-减速 动画插入器
   accelerate_interpolator
   加速-动画插入器
   decelerate_interpolator
   减速- 动画插入器
   其他的属于特定的动画效果
   repeatCount[int] 动画的重复次数 
   RepeatMode[int] 定义重复的行为 1:重新开始  2:plays backward
   startOffset[long] 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画
   zAdjustment[int] 定义动画的Z Order的改变 0:保持Z Order不变
   1:保持在最上层
   -1:保持在最下层
 
 
  -->
 <!--
  透明控制动画
  -->
 <alpha
  android:fromAlpha="0.1" 
  android:toAlpha="1.0"
  android:duration="3000"
 />
  
 <!-- 尺寸伸缩动画效果 scale
 
 
        属性:interpolator 指定一个动画的插入器

        有三种动画插入器:
   accelerate_decelerate_interpolator  加速-减速 动画插入器
         accelerate_interpolator        加速-动画插入器
   decelerate_interpolator        减速- 动画插入器

        其他的属于特定的动画效果

            fromXScale 属性为动画起始时 X坐标上的伸缩尺寸   
            toXScale   属性为动画结束时 X坐标上的伸缩尺寸    

            fromYScale 属性为动画起始时Y坐标上的伸缩尺寸   
            toYScale   属性为动画结束时Y坐标上的伸缩尺寸   

            说明:
                 以上四种属性值   
                    0.0表示收缩到没有
                    1.0表示正常无伸缩    
                    值小于1.0表示收缩 
                    值大于1.0表示放大
                   
            pivotX     属性为动画相对于物件的X坐标的开始位置
            pivotY     属性为动画相对于物件的Y坐标的开始位置
            说明:
                    以上两个属性值 从0%-100%中取值
                    50%为物件的X或Y方向坐标上的中点位置
        长整型值:
            duration  属性为动画持续时间
            说明:   时间以毫秒为单位

        布尔型值:
            fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
 -->
 <scale
  android:interpolator="@android:anim/accelerate_decelerate_interpolator"
  android:repeatCount="1"
  
  android:fromXScale="0.5"
  android:fromYScale="0.5"
  android:toXScale="1.4"  
  android:toYScale="1.4"
  android:pivotX="50%"
  android:pivotY="50%"
  android:fillAfter="false"
  android:duration="3000"
  
 />
 <!--
  画面转换位置移动动画效果 translate
 
  fromXDelta toXDelta 为动画、结束起始时 X坐标上的位置 
  fromYDelta toYDelta 为动画、结束起始时 Y坐标上的位置
  -->
 
 <translate
  android:repeatCount="2"
  android:fromXDelta="-30"
  android:fromYDelta="-30"
  android:toXDelta="-80"  
  android:toYDelta="200"
  android:duration="3000"
 />
 <!--
  画面转移旋转动画效果 rotate
  
  fromDegrees 为动画起始时物件的角度 说明
   当角度为负数——表示逆时针旋转
   当角度为正数——表示顺时针旋转
   (负数from——to正数:顺时针旋转)
   (负数from——to负数:逆时针旋转)
   (正数from——to正数:顺时针旋转)
   (正数from——to负数:逆时针旋转)
   toDegrees 属性为动画结束时物件旋转的角度 可以大于360度
  pivotX
  pivotY 为动画相对于物件的X、Y坐标的开始位 说明:以上两个属性值 从0%-100%中取值
  50%为物件的X或Y方向坐标上的中点位置
  -->
 <rotate
  android:interpolator="@android:anim/accelerate_interpolator"
  android:repeatCount="2"
  android:fromDegrees="0"
  android:toDegrees="+270"
  android:pivotX="50%"
  android:pivotY="50%"
  android:duration="3000"
 />

</set>

使用该xml动画到View上,如TextView

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.TextView;

public class TestAnimation extends Activity implements OnClickListener{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn = (Button)findViewById(R.id.Button01);
        btn.setOnClickListener(this);    
    }

 @Override
 public void onClick(View v) {
  Animation anim = AnimationUtils.loadAnimation(this, R.anim.my_rotate_action);
  findViewById(R.id.TextView01).startAnimation(anim);
 }
}

 

 方法二:直接在代码中定义动画(效果跟方法一类似):

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.Button;

public class TestAnimation extends Activity implements OnClickListener{

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn = (Button)findViewById(R.id.Button);
        btn.setOnClickListener(this);    
    }

 public void onClick(View v) {
  Animation anim = null;
  anim = new RotateAnimation(0.0f,+360.0f);
  anim.setInterpolator(new AccelerateDecelerateInterpolator());
  anim.setDuration(3000);
  findViewById(R.id.TextView01).startAnimation(anim); 
 }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值