zoukankan      html  css  js  c++  java
  • Android中TweenAnimation四种动画切换效果

    点击每个按钮都会有对应的动画显示

    activity代码:

    package com.tmacsky;
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    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.AnimationUtils;
    import android.view.animation.ScaleAnimation;
    import android.view.animation.TranslateAnimation;
    import android.view.animation.Animation.AnimationListener;
    import android.view.animation.RotateAnimation;
    import android.widget.Button;
    import android.widget.ImageView;
    public class AnimationDemoActivity extends Activity {
    	private ImageView imageView;
    	/** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //定义四个动画的button属性
            imageView = (ImageView)findViewById(R.id.imageView);
            Button alpha = (Button)findViewById(R.id.Alpha);
            alpha.setOnClickListener(new AnimationClickListener(AnimationType.Alpha));
            Button rotate = (Button)findViewById(R.id.Rotate);
            rotate.setOnClickListener(new AnimationClickListener(AnimationType.Rotate));
            Button scale = (Button)findViewById(R.id.Scale);
            scale.setOnClickListener(new AnimationClickListener(AnimationType.Scale));
            Button translate = (Button)findViewById(R.id.Translate);
            translate.setOnClickListener(new AnimationClickListener(AnimationType.Translate));
            Button complex = (Button)findViewById(R.id.Complex);
            complex.setOnClickListener(new AnimationClickListener(AnimationType.Complex));
        }
        //定义animationType属性
        enum AnimationType{
        	Alpha,
        	Rotate,
        	Scale,
        	Translate,
        	Complex
        }
        //定义一个函数
        class AnimationClickListener implements OnClickListener{
        	private AnimationType animationType;
        	public AnimationClickListener(AnimationType animType){
        		animationType = animType;
        	}
    		public void onClick(View v) {
    			// TODO Auto-generated method stub
    			switch (animationType) {
    			case Alpha:
    				//定义渐变动画,重复5次,持续1分钟
    				/*AlphaAnimation _animation = new AlphaAnimation(1f, 0.1f);
    				_animation.setDuration(3000);
    				_animation.setRepeatCount(5);
    				//设置循环
    				_animation.setRepeatMode(Animation.REVERSE);
    				_animation.setAnimationListener(new AnimationListener() {
    					//设置animation监听,依次是启动,重复,然后结束
    					public void onAnimationStart(Animation animation) {
    						// TODO Auto-generated method stub
    						Log.i("log", "animation Start");
    					}
    					public void onAnimationRepeat(Animation animation) {
    						// TODO Auto-generated method stub
    						Log.i("log", "animation Repeat");	
    					}
    					public void onAnimationEnd(Animation animation) {
    						// TODO Auto-generated method stub
    						Log.i("log", "animation End");
    					}
    				});
    				//启动动画
    				imageView.startAnimation(_animation);*/
    				AlphaAnimation alphaAnimation = (AlphaAnimation)AnimationUtils.loadAnimation(AnimationDemoActivity.this, R.anim.alpha);
    				imageView.startAnimation(alphaAnimation);
    				break;
    			case Rotate:
    				//定义旋转动画,旋转一周持续1分钟,重复三次,在物体的中心位置
    				RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    				rotateAnimation.setDuration(3000);
    				rotateAnimation.setRepeatCount(3);
    				//启动动画
    				imageView.startAnimation(rotateAnimation);
    				break;
    			case Scale:
    				//定义缩放动画,从中心坐标开始,缩放1.5倍大小,持续1分钟,重复三次
    				ScaleAnimation scaleAnimation = new ScaleAnimation(1, 1.5f, 1, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    				scaleAnimation.setDuration(3000);
    				scaleAnimation.setRepeatCount(3);
    				//启动动画
    				imageView.startAnimation(scaleAnimation);
    				break;
    			case Translate:
    				//定义移动动画,都从自身坐标开始,移动2个位置,持续1分钟,重复三次
    				TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2);
    				translateAnimation.setDuration(3000);
    				translateAnimation.setRepeatCount(3);
    				//启动动画
    				imageView.startAnimation(translateAnimation);
    				break;
    
    			case Complex:
    				//设置复杂的操作步骤,点击按钮complex后,会运行四种动画效果叠加
    				AnimationSet sets = new AnimationSet(false);
    				//定义渐变动画
    				AlphaAnimation _animation1 = new AlphaAnimation(1f, 0.1f);
    				_animation1.setDuration(3000);
    				//定义旋转动画,在物体的中心位置
    				RotateAnimation rotateAnimation1 = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    				rotateAnimation1.setDuration(3000);
    				//定义缩放动画,从中心坐标开始,缩放1.5倍大小
    				ScaleAnimation scaleAnimation1 = new ScaleAnimation(1, 1.5f, 1, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    				scaleAnimation1.setDuration(3000);
    				//定义移动动画,都从自身坐标开始,移动2个位置
    				TranslateAnimation translateAnimation1 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2);
    				translateAnimation1.setDuration(3000);
    				//启动动画
                                    sets.addAnimation(_animation1);
    				sets.addAnimation(rotateAnimation1);
    				sets.addAnimation(scaleAnimation1);
    				sets.addAnimation(translateAnimation1);
    				imageView.startAnimation(sets);
    				break;
    			default:
    				break;
    			}
    		}
        }
    }


    layout文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/hello" />
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/qa" />
        <Button
            android:id="@+id/Alpha"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Alpha" />
        <Button
            android:id="@+id/Rotate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Rotate" />
        <Button
            android:id="@+id/Scale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Scale" />
        <Button
            android:id="@+id/Translate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Translate" />
        <Button
            android:id="@+id/Complex"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Complex" />
    </LinearLayout>


    资源anim文件alpha.xml

    <?xml version="1.0" encoding="utf-8"?>
    <alpha 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromAlpha="1" android:toAlpha="0.3" android:duration="2000" android:repeatCount="3">
    </alpha>



  • 相关阅读:
    UE4美术之数学基础知识(一)
    如何用Unity制作逼真的自然场景?
    git拉取和上传项目代码
    Chaosblade-故障使用工具
    如何对数据库做优化
    分布式和集群的概念
    token、cookie、session的区别
    Json中的json.tojsonString()方法
    JSON的put方法
    fastjson中的相关方法
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3178055.html
Copyright © 2011-2022 走看看