Android中使用animation的方法

在Android中,分别可以在xml中定义Animation,也可以在程序代码中定义,
下面的小例子是利用RotateAnimation简单展示一下两种方法的用法,对于其他动画,如ScaleAnimation,AlphaAnimation,原理是一样的。


方法一:在xml中定义动画:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+360"
android:duration="3000" />

<!-- rotate 旋转动画效果
属性:interpolator 指定一个动画的插入器,用来控制动画的速度变化
fromDegrees 属性为动画起始时物件的角度
toDegrees 属性为动画结束时物件旋转的角度,+代表顺时针
duration 属性为动画持续时间,以毫秒为单位
-->
</set>

使用动画的Java代码,程序的效果是点击按钮,TextView旋转一周:
package com.ray.animation;

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);
}
}

方法二:直接在代码中定义动画(效果跟方法一类似):
package com.ray.animation;

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);
}
}


补充说明:
Android动画解析 --JavaCode


AlphaAnimation

① AlphaAnimation类对象定义
private AlphaAnimation myAnimation_Alpha;
复制代码
② AlphaAnimation类对象构造

AlphaAnimation(float fromAlpha, float toAlpha)
//第一个参数fromAlpha为 动画开始时候透明度
//第二个参数toAlpha为 动画结束时候透明度
myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);
//说明:
// 0.0表示完全透明
// 1.0表示完全不透明
复制代码
③ 设置动画持续时间

myAnimation_Alpha.setDuration(5000);
//设置时间持续时间为 5000毫秒
复制代码



ScaleAnimation

① ScaleAnimation类对象定义

private AlphaAnimation myAnimation_Alpha;
复制代码
② ScaleAnimation类对象构造

ScaleAnimation(float fromX, float toX, float fromY, float toY,
int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
//第一个参数fromX为动画起始时 X坐标上的伸缩尺寸
//第二个参数toX为动画结束时 X坐标上的伸缩尺寸
//第三个参数fromY为动画起始时Y坐标上的伸缩尺寸
//第四个参数toY为动画结束时Y坐标上的伸缩尺寸
/*说明:
以上四种属性值
0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
*/
//第五个参数pivotXType为动画在X轴相对于物件位置类型
//第六个参数pivotXValue为动画相对于物件的X坐标的开始位置
//第七个参数pivotXType为动画在Y轴相对于物件位置类型
//第八个参数pivotYValue为动画相对于物件的Y坐标的开始位置
myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
复制代码
③ 设置动画持续时间

myAnimation_Scale.setDuration(700);
//设置时间持续时间为 700毫秒
复制代码



TranslateAnimation


① TranslateAnimation类对象定义

private AlphaAnimation myAnimation_Alpha;
复制代码
② TranslateAnimation类对象构造

TranslateAnimation(float fromXDelta, float toXDelta,
float fromYDelta, float toYDelta)
//第一个参数fromXDelta为动画起始时 X坐标上的移动位置
//第二个参数toXDelta为动画结束时 X坐标上的移动位置
//第三个参数fromYDelta为动画起始时Y坐标上的移动位置
//第四个参数toYDelta为动画结束时Y坐标上的移动位置
复制代码
③ 设置动画持续时间

myAnimation_Translate.setDuration(2000);
//设置时间持续时间为 2000毫秒
复制代码


RotateAnimation
①  RotateAnimation类对象定义

private AlphaAnimation myAnimation_Alpha;
复制代码

②  RotateAnimation类对象构造

RotateAnimation(float fromDegrees, float toDegrees,
int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
//第一个参数fromDegrees为动画起始时的旋转角度
//第二个参数toDegrees为动画旋转到的角度
//第三个参数pivotXType为动画在X轴相对于物件位置类型
//第四个参数pivotXValue为动画相对于物件的X坐标的开始位置
//第五个参数pivotXType为动画在Y轴相对于物件位置类型
//第六个参数pivotYValue为动画相对于物件的Y坐标的开始位置
myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,
Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
复制代码

③  设置动画持续时间

myAnimation_Rotate.setDuration(3000);

//设置时间持续时间为 3000毫秒
复制代码


如何使用 Java 代码中的动画效果

使用从 View 父类继承过来的方法 startAnimation ()来为 View 或是子类 View 等等添加一个动画效果

public void startAnimation (Animation animation)

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. Python技巧匿名函数、回调函数和高阶函数
  3. python list.sort()根据多个关键字排序的方法实现
  4. android中关于class Build以及如何修改android固件版本号
  5. 开机动画(闪动的ANDROID字样的动画图片)
  6. Android(安卓)开机动画分析
  7. Android中使用animation的方法
  8. Android(安卓)开源动画框架:NineOldAndroids
  9. Android动画TimeInterpolator(插值器)和TypeEvaluator(估值器)分析

随机推荐

  1. 修改 ActivityManagerService.java 去掉
  2. gprs便捷开关 android之widget应用
  3. android 系统关机,重启
  4. Android(安卓)P SystemUI下拉时,状态栏和
  5. 学习笔记-Android(安卓)Gallery实现
  6. Android的OpenGL学习笔记(6)
  7. Android(安卓)SDK 国内镜像
  8. android wifi 相关方面整理
  9. Android实现控件View移动控制。
  10. android studio设置debug.keystore