• Android学习二_八:Animation的使用(一) (转)


    一、Animations介绍

    Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转、缩放、淡入淡出等,这些效果可以应用在绝大多数的控件中。 

    二、Animations的分类

    Animations从总体上可以分为两大类:

    1.Tweened Animations:该类Animations提供了旋转、移动、伸展和淡出等效果。Alpha——淡入淡出,Scale——缩放效果,Rotate——旋转,Translate——移动效果。

    2.Frame-by-frame Animations:这一类Animations可以创建一个Drawable序列,这些Drawable可以按照指定的时间间歇一个一个的显示。

     

    三、Animations的使用方法(代码中使用)

    对象之间的关系:

    [转载]Android学习二_八:Animation的使用(一)

    使用TweenedAnimations的步骤:

    1.创建一个AnimationSet对象(Animation子类);

    2.增加需要创建相应的Animation对象;

    3.更加项目的需求,为Animation对象设置相应的数据;

    4.将Animatin对象添加到AnimationSet对象当中;

    5.使用控件对象开始执行AnimationSet。

    [转载]Android学习二_八:Animation的使用(一)

    四、具体实现

    1、main.xml

    <?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" >

     

        <LinearLayout

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:orientation="horizontal" >

     

            <Button

                android:id="@+id/rotateButton"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:text="旋转" />

     

            <Button

                android:id="@+id/scaleButton"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:text="缩放" />

     

            <Button

                android:id="@+id/alphaButton"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:text="淡入淡出" />

     

            <Button

                android:id="@+id/translateButton"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:text="移动" />

        </LinearLayout>

     

        <LinearLayout

            android:layout_width="fill_parent"

            android:layout_height="fill_parent"

            android:orientation="vertical" >

     

            <ImageView

                android:id="@+id/image"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_centerInParent="true"

                android:src="@drawable/an" />

        </LinearLayout>

     

    </LinearLayout>

    2、.java文件

    importandroid.app.Activity;

    importandroid.os.Bundle;

    importandroid.view.View;

    importandroid.view.View.OnClickListener;

    import android.view.animation.AlphaAnimation;

    import android.view.animation.Animation;

    importandroid.view.animation.AnimationSet;

    importandroid.view.animation.RotateAnimation;

    importandroid.view.animation.ScaleAnimation;

    import android.view.animation.TranslateAnimation;

    importandroid.widget.Button;

    importandroid.widget.ImageView;

    public class Animation1Activity extends Activity {

        private Button rotateButton null;

        private Button scaleButton null;

        private Button alphaButton null;

        private Button translateButton null;

        private ImageView image null;

        @Override

        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.main);

           

            rotateButton = (Button)findViewById(R.id.rotateButton);

            scaleButton = (Button)findViewById(R.id.scaleButton);

            alphaButton = (Button)findViewById(R.id.alphaButton);

            translateButton = (Button)findViewById(R.id.translateButton);

            image = (ImageView)findViewById(R.id.image);

         

            rotateButton.setOnClickListener(newRotateButtonListener());

            scaleButton.setOnClickListener(newScaleButtonListener());

            alphaButton.setOnClickListener(newAlphaButtonListener());

            translateButton.setOnClickListener(

               new TranslateButtonListener());

        }

        class AlphaButtonListener implementsOnClickListener{

           public void onClick(View v) {

               //创建一个AnimationSet对象,参数为Boolean型,

               //true表示使用Animationinterpolatorfalse则是使用自己的

               AnimationSet animationSet = new AnimationSet(true);

               //创建一个AlphaAnimation对象,参数从完全的透明度,到完全的不透明

               AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);

               //设置动画执行的时间

               alphaAnimation.setDuration(500);

               //alphaAnimation对象添加到AnimationSet当中

               animationSet.addAnimation(alphaAnimation);

               //使用ImageViewstartAnimation方法执行动画

               image.startAnimation(animationSet);

           }

        }

        class RotateButtonListener implementsOnClickListener{

           public void onClick(View v) {

               AnimationSet animationSet = new AnimationSet(true);

               //参数1:从哪个旋转角度开始

               //参数2:转到什么角度

               //4个参数用于设置围绕着旋转的圆的圆心在哪里

               //参数3:确定x轴坐标的类型,有ABSOLUT绝对坐标、RELATIVE_TO_SELF相对于自身坐标、RELATIVE_TO_PARENT相对于父控件的坐标

               //参数4x轴的值,0.5f表明是以自身这个控件的一半长度为x

               //参数5:确定y轴坐标的类型

               //参数6y轴的值,0.5f表明是以自身这个控件的一半长度为x

               RotateAnimation rotateAnimation = new RotateAnimation(0, 360,

                      Animation.RELATIVE_TO_SELF,0.5f,

                      Animation.RELATIVE_TO_SELF,0.5f);

               rotateAnimation.setDuration(1000);

               animationSet.addAnimation(rotateAnimation);

               image.startAnimation(animationSet);

           }

        }

        class ScaleButtonListener implementsOnClickListener{

           public void onClick(View v) {

               AnimationSet animationSet = new AnimationSet(true);

               //参数1x轴的初始值

               //参数2x轴收缩后的值

               //参数3y轴的初始值

               //参数4y轴收缩后的值

               //参数5:确定x轴坐标的类型

               //参数6x轴的值,0.5f表明是以自身这个控件的一半长度为x

               //参数7:确定y轴坐标的类型

               //参数8y轴的值,0.5f表明是以自身这个控件的一半长度为x

               ScaleAnimation scaleAnimation = new ScaleAnimation(

                      0, 0.1f,0,0.1f,

                      Animation.RELATIVE_TO_SELF,0.5f,

                      Animation.RELATIVE_TO_SELF,0.5f);

               scaleAnimation.setDuration(1000);

               animationSet.addAnimation(scaleAnimation);

               image.startAnimation(animationSet);

           }

        }

        class TranslateButtonListener implementsOnClickListener{

           public void onClick(View v) {

               AnimationSet animationSet = new AnimationSet(true);

               //参数12x轴的开始位置

               //参数34y轴的开始位置

               //参数56x轴的结束位置

               //参数78x轴的结束位置

               TranslateAnimation translateAnimation =

                  new TranslateAnimation(

                      Animation.RELATIVE_TO_SELF,0f,

                      Animation.RELATIVE_TO_SELF,0.5f,

                      Animation.RELATIVE_TO_SELF,0f,

                      Animation.RELATIVE_TO_SELF,0.5f);

               translateAnimation.setDuration(1000);

               animationSet.addAnimation(translateAnimation);

               image.startAnimation(animationSet);

           }

        }

    }

    [转载]Android学习二_八:Animation的使用(一)

     五、Tween Animations的通用方法

    [转载]Android学习二_八:Animation的使用(一)

    转自:链接

  • 相关阅读:
    BZOJ 4571: [Scoi2016]美味
    LibreOJ #108. 多项式乘法
    BZOJ 4568: [Scoi2016]幸运数字
    BZOJ 4567: [Scoi2016]背单词
    fhq treap ------ luogu P3369 【模板】普通平衡树(Treap/SBT)
    LibreOJ #6191. 「美团 CodeM 复赛」配对游戏
    LibreOJ #6212. 「美团 CodeM 决赛」melon
    LibreOJ #6192. 「美团 CodeM 复赛」城市网络
    LibreOJ #6220. sum
    AC日记——LOOPS hdu 3853
  • 原文地址:https://www.cnblogs.com/YangBinChina/p/4775171.html
Copyright © 2020-2023  润新知