Animation 动画详解 ---alpha、scale、translate、rotate、set
参照文件Animation
动作定义文件应该存放在res/anim文件夹下
从Animation类继承的属性:
android:duration 动画持续时间,以毫秒为单位
android:fillAfter 如果设置为true,控件动画结束时,将保持动画最后时的状态
android:fillBefore 如果设置为true,控件动画结束时,还原到开始动画前的状态
android:interpolator 设定插值器,其实就是指定的动作效果,比如弹跳效果
1. scale:渐变尺寸伸缩动画效果。以下几个属性:
android:fromXScale 起始的X方向上相对自身的缩放比例,浮点值,比如1.0代表自身无变化,0.5代表起始时缩小一倍,2.0代表放大一倍;
android:toXScale 结尾的X方向上相对自身的缩放比例,浮点值;
android:fromYScale android:toYScale
android:pivotX 缩放起点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,当为数值时,表示在当前View的左上角,即原点处加上50px,做为起始缩放点;如果是50%,表示在当前控件的左上角加上自己宽度的50%做为起始点;如果是50%p,那么就是表示在当前的左上角加上父控件宽度的50%做为起始点x轴坐标。(具体意义,后面会举例演示)
android:pivotY 缩放起点Y轴坐标,取值及意义跟android:pivotX一样。
2.alpha :标签——调节透明度
android:fromAlpha 动画开始的透明度,从0.0 --1.0 ,0.0表示全透明,1.0表示完全不透明
android:toAlpha 动画结束时的透明度,也是从0.0 --1.0 ,0.0表示全透明,1.0表示完全不透明
3.rotate:标签——旋转
android:fromDegrees 开始旋转的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数
android:toDegrees 结束时旋转到的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数
围绕自身从0度逆时针旋转650度
android:fromDegrees="0"
android:toDegrees="- 650"
4.translate:标签 —— 平移
android:fromXDelta 起始点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p
android:fromYDelta 起始点Y轴从标
android:toXDelta 结束点X轴坐标
android:toYDelta 结束点Y轴坐标
5.set标签自已是没有属性的,他的属性都是从Animation继承而来,但当它们用于Set标签时,就会对Set标签下的所有子控件都产生作用
文件所属:
主程序代码:
package com.keman.animation;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
public class AnimationActivity extends Activity {
/** Called when the activity is first created. */
Button bt;
ImageView ig1;
ImageView ig2;
ImageView ig3;
ImageView ig4;
Animation scaleAnimation;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
scaleAnimation = AnimationUtils.loadAnimation(this, R.anim.scaleanim);
bt = (Button) findViewById(R.id.button1);
ig1 = (ImageView) findViewById(R.id.imageView1);
ig2 = (ImageView) findViewById(R.id.imageView2);
ig3 = (ImageView) findViewById(R.id.imageView3);
ig4 = (ImageView) findViewById(R.id.imageView4);
bt.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
ig1.startAnimation(scaleAnimation);
ig2.startAnimation(scaleAnimation);
ig3.startAnimation(scaleAnimation);
ig4.startAnimation(scaleAnimation);
}
});
}
}
scaleanim.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:interpolator="@android:anim/decelerate_interpolator">
<!-- ̵·à--><!--אфµ䌵·à -->
<scale
android:fromXScale="0.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
/>
<!-- ѽת -->
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
/>
<!-- ķ¶Ơ-->
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
/>
</set>
main的布局图片如下:
由于不知道怎么传小视频,图片传的那么麻烦。就简单描述一下效果:
点击最上面<旋转吧,兄弟>按钮,四个imageView中的图片会透明度由低到高、沿着各自的中心、从中心由小到大、逆时针旋转。如果你看完代码就知道效果的话,说明你已经看懂了。