关于Android提供的Animation动画Java语言的实现

本文详细介绍如何在Java代码中定义和使用四种基本动画:透明度动画(AlphaAnimation)、缩放动画(ScaleAnimation)、位移动画(TranslateAnimation)及旋转动画(RotateAnimation)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何在Java代码中定义动画


  • //在代码中定义 动画实例对象
  • private Animation myAnimation_Alpha;
  • private Animation myAnimation_Scale;
  • private Animation myAnimation_Translate;
  • private Animation myAnimation_Rotate;
  •    
  •     //根据各自的构造方法来初始化一个实例对象
  • myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);

  • myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
  •              Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

  • myAnimation_Translate=new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);

  • myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,
  •                Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);

  • Android动画解析--JavaCode


    AlphaAnimation

    ① AlphaAnimation类对象定义

       1、private AlphaAnimation myAnimation_Alpha

    ② AlphaAnimation类对象构造 


    1. AlphaAnimation(float fromAlpha, float toAlpha)
    2. //第一个参数fromAlpha为 动画开始时候透明度
    3. //第二个参数toAlpha为 动画结束时候透明度
    4. myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);
    5. //说明:
    6. //                0.0表示完全透明
    7. //                1.0表示完全不透明

    ③ 设置动画持续时间 

    1. myAnimation_Alpha.setDuration(5000);
    2. //设置时间持续时间为 5000毫秒

    以下代码:

    public class MainActivity extends Activity {
        ImageView image;
        Button start;
        Button cancel;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            image = (ImageView) findViewById(R.id.main_img);
            start = (Button) findViewById(R.id.main_start);
            cancel = (Button) findViewById(R.id.main_cancel);
            /** 设置透明度渐变动画 */
            final AlphaAnimation animation = new AlphaAnimation(1, 0);
            animation.setDuration(2000);// 设置动画持续时间
            /** 常用方法 */
            // animation.setRepeatCount(int repeatCount);//设置重复次数
            // animation.setFillAfter(boolean);//动画执行完后是否停留在执行完的状态
            // animation.setStartOffset(long startOffset);//执行前的等待时间
            start.setOnClickListener(new OnClickListener() {
                public void onClick(View arg0) {
                    image.setAnimation(animation);
                    /** 开始动画 */
                    animation.startNow();
                }
            });
            cancel.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    /** 结束动画 */
                    animation.cancel();
                }
            });
        }
    }


    ScaleAnimation

    ① ScaleAnimation类对象定义

           1、private AlphaAnimation myAnimation_Alpha;

    ② ScaleAnimation类对象构造 

    1. ScaleAnimation(float fromX, float toX, float fromY, float toY,
    2.            int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
    3. //第一个参数fromX为动画起始时 X坐标上的伸缩尺寸   
    4. //第二个参数toX为动画结束时 X坐标上的伸缩尺寸     
    5. //第三个参数fromY为动画起始时Y坐标上的伸缩尺寸   
    6. //第四个参数toY为动画结束时Y坐标上的伸缩尺寸  
    7. /*说明:
    8.                     以上四种属性值   
    9.                     0.0表示收缩到没有
    10.                     1.0表示正常无伸缩     
    11.                     值小于1.0表示收缩  
    12.                     值大于1.0表示放大
    13. */
    14. //第五个参数pivotXType为动画在X轴相对于物件位置类型  
    15. //第六个参数pivotXValue为动画相对于物件的X坐标的开始位置
    16. //第七个参数pivotXType为动画在Y轴相对于物件位置类型   
    17. //第八个参数pivotYValue为动画相对于物件的Y坐标的开始位置
    18. myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
    19.              Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

    ③ 设置动画持续时间

    1. myAnimation_Scale.setDuration(700);
    2. //设置时间持续时间为 700毫秒
    代码如下:

          public class MainActivity extends Activity {
             ImageView image;
             Button start;
             Button cancel;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            image = (ImageView) findViewById(R.id.main_img);
            start = (Button) findViewById(R.id.main_start);
            cancel = (Button) findViewById(R.id.main_cancel);
            /** 设置缩放动画 */
            final ScaleAnimation animation = new ScaleAnimation(0.0f, 1.4f, 0.0f,
                    1.4f, Animation.RELATIVE_TO_SELF, 0.5f,
                    Animation.RELATIVE_TO_SELF, 0.5f);
            animation.setDuration(2000);// 设置动画持续时间
            /** 常用方法 */
            // animation.setRepeatCount(int repeatCount);//设置重复次数
            // animation.setFillAfter(boolean);//动画执行完后是否停留在执行完的状态
            // animation.setStartOffset(long startOffset);//执行前的等待时间
            start.setOnClickListener(new OnClickListener() {
                public void onClick(View arg0) {
                    image.setAnimation(animation);
                    /** 开始动画 */
                    animation.startNow();
                }
            });
            cancel.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    /** 结束动画 */
                    animation.cancel();
                }
            });
        }
    }


    TranslateAnimation

    ① TranslateAnimation类对象定义

      1、private AlphaAnimation myAnimation_Alpha;

    ② TranslateAnimation类对象构造 


    1. TranslateAnimation(float fromXDelta, float toXDelta,
    2.                        float fromYDelta, float toYDelta)
    3. //第一个参数fromXDelta为动画起始时 X坐标上的移动位置   
    4. //第二个参数toXDelta为动画结束时 X坐标上的移动位置      
    5. //第三个参数fromYDelta为动画起始时Y坐标上的移动位置     
    6. //第四个参数toYDelta为动画结束时Y坐标上的移动位置
    ③ 设置动画持续时间 

    1. myAnimation_Translate.setDuration(2000);
    2. //设置时间持续时间为 2000毫秒
    3. myAnimation_Translate.setDuration(long durationMillis);//设置动画持续时间
      myAnimation_Translate.setRepeatCount(int i);//设置重复次数
      myAnimation_Translate.setRepeatMode(Animation.REVERSE);//设置反方向执行

    代码如下:

    public class MainActivity extends Activity {
        ImageView image;
        Button start;
        Button cancel;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            image = (ImageView) findViewById(R.id.main_img);
            start = (Button) findViewById(R.id.main_start);
            cancel = (Button) findViewById(R.id.main_cancel);
            /** 设置位移动画 向右位移150 */
            final TranslateAnimation animation = new TranslateAnimation(0, 150, 0,
                    0);
            animation.setDuration(2000);// 设置动画持续时间
            animation.setRepeatCount(2);// 设置重复次数
            animation.setRepeatMode(Animation.REVERSE);// 设置反方向执行
            start.setOnClickListener(new OnClickListener() {
                public void onClick(View arg0) {
                    image.setAnimation(animation);
                    /** 开始动画 */
                    animation.startNow();
                }
            });
            cancel.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    /** 结束动画 */
                    animation.cancel();
                }
            });
        }
    }


    RotateAnimation

    ① RotateAnimation类对象定义

       1、private AlphaAnimation myAnimation_Alpha;

    ② RotateAnimation类对象构造

    1. RotateAnimation(float fromDegrees, float toDegrees,
    2.             int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
    3. //第一个参数fromDegrees为动画起始时的旋转角度   
    4. //第二个参数toDegrees为动画旋转到的角度   
    5. //第三个参数pivotXType为动画在X轴相对于物件位置类型  
    6. //第四个参数pivotXValue为动画相对于物件的X坐标的开始位置
    7. //第五个参数pivotXType为动画在Y轴相对于物件位置类型   
    8. //第六个参数pivotYValue为动画相对于物件的Y坐标的开始位置
    9. myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,
    10.                Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);

    ③ 设置动画持续时间

    1. myAnimation_Rotate.setDuration(3000);
    2. //设置时间持续时间为 3000毫秒

    代码如下:

    public class MainActivity extends Activity {
        ImageView image;
        Button start;
        Button cancel;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            image = (ImageView) findViewById(R.id.main_img);
            start = (Button) findViewById(R.id.main_start);
            cancel = (Button) findViewById(R.id.main_cancel);
            /** 设置旋转动画 */
            final RotateAnimation animation = new RotateAnimation(0f, 360f,
                    Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
                    0.5f);
            animation.setDuration(3000);// 设置动画持续时间
            /** 常用方法 */
            // animation.setRepeatCount(int repeatCount);//设置重复次数
            // animation.setFillAfter(boolean);//动画执行完后是否停留在执行完的状态
            // animation.setStartOffset(long startOffset);//执行前的等待时间
            start.setOnClickListener(new OnClickListener() {
                public void onClick(View arg0) {
                    image.setAnimation(animation);
                    /** 开始动画 */
                    animation.startNow();
                }
            });
            cancel.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    /** 结束动画 */
                    animation.cancel();
                }
            });
        }
    }


    如何使用Java代码中的动画效果

    使用从View父类继承过来的方法startAnimation()来为View或是子类View等等添加一个动画效果

                  1、public void startAnimation (Animation animation) 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值