zoukankan      html  css  js  c++  java
  • Android常用动画Animation的使用

    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中实现的效果都是一样的,最后上图



    完整的代码可以到以下链接下载

    点击打开链接

  • 相关阅读:
    Eclipse 代码自动补全设置
    Ubuntu下MySQL的安装及远程连接配置等配置
    Ubuntu 8.04 下安装mcrypt扩展
    Android sdk manager 显示 “Done loading packages”,停下来不动了!
    「Clover 10」杯HE两校联赛(第二轮Day1)
    自招搞到了NUAA降分到一本线的优惠
    NOIP 2009 解题报告
    SD多校模拟赛Day1&Day2
    「Nescafé 29」杯HE两校联赛(第二轮Day2)
    临近比赛要淡定从容
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3297153.html
Copyright © 2011-2022 走看看