[转]安卓Animation
[转自]http://www.360doc.com/content/13/0102/22/6541311_257754535.shtml
重要的事情说三遍
fillBefore是指动画结束时画面停留在第一帧,fillAfter是指动画结束是画面停留在最后一帧。最关键的问题是,这2个参数不能在</alpha>,</scale>,</translate>,</rotate>中设置,这是没有用的,必须在动画xml文件的</set>节点中设置。如果是代码必须在AnimationSet中设置。
fillBefore是指动画结束时画面停留在第一帧,fillAfter是指动画结束是画面停留在最后一帧。最关键的问题是,这2个参数不能在</alpha>,</scale>,</translate>,</rotate>中设置,这是没有用的,必须在动画xml文件的</set>节点中设置。如果是代码必须在AnimationSet中设置。
fillBefore是指动画结束时画面停留在第一帧,fillAfter是指动画结束是画面停留在最后一帧。最关键的问题是,这2个参数不能在</alpha>,</scale>,</translate>,</rotate>中设置,这是没有用的,必须在动画xml文件的</set>节点中设置。如果是代码必须在AnimationSet中设置。
其他的看我转的链接吧。
package com.example.myapp.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.*;
import android.widget.Button;
import android.widget.ImageView;
import com.example.myapp.R;
/**
* Created by admin on 15/9/9.
*/
public class AnimationActivity extends Activity implements View.OnClickListener{
private Button alpha;
private Button traslate;
private Button rotate;
private Button scale;
private Button all;
private Button xml;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.animation);
initviews();
initListener();
}
public void initviews(){
alpha = (Button)findViewById(R.id.alpha);
traslate = (Button)findViewById(R.id.traslate);
rotate = (Button)findViewById(R.id.rotate);
scale = (Button)findViewById(R.id.scale);
imageView = (ImageView)findViewById(R.id.image);
all = (Button)findViewById(R.id.all);
xml = (Button)findViewById(R.id.xml);
}
public void initListener(){
alpha.setOnClickListener(this);
traslate.setOnClickListener(this);
rotate.setOnClickListener(this);
scale.setOnClickListener(this);
all.setOnClickListener(this);
xml.setOnClickListener(this);
}
/**
* Tween Animations的通用方法
1、setDuration(long durationMills)
设置动画持续时间(单位:毫秒)
2、setFillAfter(Boolean fillAfter)
如果fillAfter的值为true,则动画执行后,控件将停留在执行结束的状态
3、setFillBefore(Boolean fillBefore)
如果fillBefore的值为true,则动画执行后,控件将回到动画执行之前的状态
4、setStartOffSet(long startOffSet)
设置动画执行之前的等待时间
5、setRepeatCount(int repeatCount)
设置动画重复执行的次数
* @param v
*/
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.alpha:
AnimationSet animationSet = new AnimationSet(true);
AlphaAnimation alphaAnimation = new AlphaAnimation(0,0.5f);
alphaAnimation.setDuration(1000);
animationSet.addAnimation(alphaAnimation);
animationSet.setFillAfter(true);
imageView.startAnimation(animationSet);
break;
case R.id.traslate:
AnimationSet animationSet1 = new AnimationSet(true);
TranslateAnimation translateAnimation = new TranslateAnimation(
Animation.RELATIVE_TO_SELF,0,
Animation.RELATIVE_TO_SELF,1,
Animation.RELATIVE_TO_SELF,0,
Animation.RELATIVE_TO_SELF,1);
translateAnimation.setDuration(1000);
animationSet1.addAnimation(translateAnimation);
imageView.setAnimation(animationSet1);
break;
case R.id.rotate:
AnimationSet animationSet2 = new AnimationSet(true);
RotateAnimation rotateAnimation = new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
rotateAnimation.setDuration(1000);
animationSet2.addAnimation(rotateAnimation);
imageView.setAnimation(animationSet2);
break;
case R.id.scale:
AnimationSet animationSet3 = new AnimationSet(true);
ScaleAnimation scaleAnimation = new ScaleAnimation(0,1,0,1,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
scaleAnimation.setDuration(1000);
animationSet3.addAnimation(scaleAnimation);
imageView.setAnimation(animationSet3);
break;
case R.id.all:
AnimationSet animationSet4 = new AnimationSet(true);
AlphaAnimation alphaAnimation2 = new AlphaAnimation(0,1);
alphaAnimation2.setDuration(1000);
animationSet4.addAnimation(alphaAnimation2);
TranslateAnimation translateAnimation2 = new TranslateAnimation(
Animation.RELATIVE_TO_SELF,0,
Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0,
Animation.RELATIVE_TO_SELF,0.5f);
translateAnimation2.setDuration(1000);
animationSet4.addAnimation(translateAnimation2);
RotateAnimation rotateAnimation2 = new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
rotateAnimation2.setDuration(1000);
animationSet4.addAnimation(rotateAnimation2);
ScaleAnimation scaleAnimation2 = new ScaleAnimation(0,1,0,1,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
scaleAnimation2.setDuration(1000);
animationSet4.addAnimation(scaleAnimation2);
imageView.setAnimation(animationSet4);
break;
case R.id.xml:
Animation animation = AnimationUtils.loadAnimation(this,R.anim.animation);
imageView.startAnimation(animation);
break;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:shareInterpolator="true"
android:fillAfter="true">
<alpha android:duration="1000"
android:fromAlpha="0.0"
android:toAlpha="0.3"></alpha>
<rotate android:duration="1000"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"></rotate>
<scale android:duration="1000"
android:fromXScale="0"
android:toXScale="1.0"
android:fromYScale="0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"></scale>
</set>

浙公网安备 33010602011771号