Andriod中有几种常用的Animation
AlphaAnimation 淡入淡出效果
RotateAnimation 旋转效果
ScaleAnimation 缩放动画
TranslaAnimation 移动动画
这几种动画可以通过xml实现也可以通过java代码实现,先看下在代码中是怎样实现了
在布局文件(animation.xml)中声明几个效果的按钮和图片
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    <Button
        android:id="@+id/rotate"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="rotate演示" />
    <Button
        android:id="@+id/scale"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="scale演示" />
    <Button
        android:id="@+id/translate"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="translate演示" />
    <Button
        android:id="@+id/alpha"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="alpha演示" />
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dip"
        android:src="@drawable/ic_launcher" />
</LinearLayout>
 
在Activity中
package com.example.animation;
import com.example.widgetdemo.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
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.Button;
import android.widget.ImageView;
public class AnimationDemo extends Activity {
	private Button rotate = null;
	private Button scale = null;
	private Button translate = null;
	private Button alpha = null;
	private ImageView image = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.animation);
		rotate = (Button) findViewById(R.id.rotate);
		scale = (Button) findViewById(R.id.scale);
		translate = (Button) findViewById(R.id.translate);
		alpha = (Button) findViewById(R.id.alpha);
		image = (ImageView) findViewById(R.id.image);
		rotate.setOnClickListener(new rotateListener());
		scale.setOnClickListener(new scaleListener());
		translate.setOnClickListener(new translateListener());
		alpha.setOnClickListener(new alphaListener());
	}
	/**
	 * 旋转动画
	 * @author Administrator
	 *
	 */
	class rotateListener implements OnClickListener {
		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			AnimationSet animationSet = new AnimationSet(true);
			RotateAnimation totateAnimation = new RotateAnimation(0, //旋转开始角度
					360,   //旋转结束角度
					Animation.RELATIVE_TO_SELF,   //X轴的旋转类型有三种选择Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT
					2f,    //X轴的旋转值
					Animation.RELATIVE_TO_SELF, 
					0f);
			//动画持续时间
			totateAnimation.setDuration(2000);   
			//添加动画效果
			animationSet.addAnimation(totateAnimation);
			//为图片添加动画
			image.startAnimation(animationSet);
		}
	}
	/**
	 * 缩放动画
	 * @author Administrator
	 *
	 */
	class scaleListener implements OnClickListener {
		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			AnimationSet animationSet = new AnimationSet(true);
			ScaleAnimation scaleAnimation = new ScaleAnimation(1, 0.1f, 1,
					0.1f, Animation.RELATIVE_TO_SELF, 0.5f,
					Animation.RELATIVE_TO_SELF, 0.5f);
			scaleAnimation.setDuration(2000);
			animationSet.addAnimation(scaleAnimation);
			image.startAnimation(animationSet);
		}
	}
	/**
	 * 移动
	 * @author Administrator
	 *
	 */
	class translateListener implements OnClickListener {
		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			AnimationSet animationSet = new AnimationSet(true);
			TranslateAnimation translateAnimation = new TranslateAnimation(
					Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF,
					0.5f, Animation.RELATIVE_TO_SELF, 0f,
					Animation.RELATIVE_TO_SELF, 1.0f);
			translateAnimation.setDuration(2000);
			animationSet.addAnimation(translateAnimation);
			image.startAnimation(animationSet);
		}
	}
	/**
	 * 渐变动画 淡入淡出
	 * @author Administrator
	 *
	 */
	class alphaListener implements OnClickListener {
		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			AnimationSet animationSet = new AnimationSet(true);
			AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
			alphaAnimation.setDuration(2000);
			animationSet.setStartOffset(1000); // 1s后开始
			animationSet.addAnimation(alphaAnimation);
			image.startAnimation(animationSet);
		}
	}
}
 难点主要是每个动画的构造函数如何设置参数。
第二种实现方法
下面再来看下如何在xml中设置动画
首先在res目录下创建anim目录动画效果的配置文件
alpha.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >
    <alpha
        android:duration="3000"
        android:fromAlpha="1.0"
        android:toAlpha="0.0"
        android:startOffset="500" />
</set>
 rotate.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >
    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+360" />
</set>
 scale.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >
    <scale
        android:duration="3000"
        android:fromXScale="1.0"
        android:toXScale="0.0"
        android:fromYScale="1.0"
        android:toYScale="0.0"
        android:pivotX="50%"
        android:pivotY="50%"/>
</set>
 translate.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >
    <translate
        android:duration="3000"
        android:fromXDelta="50%"
        android:toXDelta="100%"
        android:fromYDelta="0%"
        android:toYDelta="100%" />
</set>
 再来看下在Activity中如何实现
package com.example.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.ImageView;
import com.example.widgetdemo.R;
public class AnimationXmlDemo extends Activity {
	private Button rotate = null;
	private Button scale = null;
	private Button translate = null;
	private Button alpha = null;
	private ImageView image = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.animation_xml);
		rotate = (Button) findViewById(R.id.rotate);
		scale = (Button) findViewById(R.id.scale);
		translate = (Button) findViewById(R.id.translate);
		alpha = (Button) findViewById(R.id.alpha);
		image = (ImageView) findViewById(R.id.image);
		rotate.setOnClickListener(new rotateListener());
		scale.setOnClickListener(new scaleListener());
		translate.setOnClickListener(new translateListener());
		alpha.setOnClickListener(new alphaListener());
	}
	
	/**
	 * 旋转动画
	 * @author Administrator
	 *
	 */
	class rotateListener implements OnClickListener {
		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			Animation animation = AnimationUtils.loadAnimation(AnimationXmlDemo.this, R.anim.rotate);
			image.startAnimation(animation);
		}
	}
	/**
	 * 缩放动画
	 * @author Administrator
	 *
	 */
	class scaleListener implements OnClickListener {
		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			Animation animation = AnimationUtils.loadAnimation(AnimationXmlDemo.this, R.anim.scale);
			image.startAnimation(animation);
		}
	}
	/**
	 * 移动
	 * @author Administrator
	 *
	 */
	class translateListener implements OnClickListener {
		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			Animation animation = AnimationUtils.loadAnimation(AnimationXmlDemo.this, R.anim.translate);
			image.startAnimation(animation);
		}
	}
	/**
	 * 渐变动画
	 * @author Administrator
	 *
	 */
	class alphaListener implements OnClickListener {
		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			Animation animation = AnimationUtils.loadAnimation(AnimationXmlDemo.this, R.anim.alpha);
			image.startAnimation(animation);
		}
	}
}
在代码中和xml中实现的效果都是一样的,最后上图
 
 完整的代码可以到以下链接下载
 
                    
                     
                    
                 
                    
                
 
         
 
                
            
        
 浙公网安备 33010602011771号
浙公网安备 33010602011771号