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



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

    点击打开链接

  • 相关阅读:
    SQL Server, Timeout expired.all pooled connections were in use and max pool size was reached
    javascript 事件调用顺序
    Best Practices for Speeding Up Your Web Site
    C语言程序设计 使用VC6绿色版
    破解SQL Prompt 3.9的几步操作
    Master page Path (MasterPage 路径)
    几个小型数据库的比较
    CSS+DIV 完美实现垂直居中的方法
    由Response.Redirect引发的"Thread was being aborted. "异常的处理方法
    Adsutil.vbs 在脚本攻击中的妙用
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3297153.html
Copyright © 2011-2022 走看看