Android 动画效果(二):四种基础动画的 **动态设置、动画监听、组合动画

  这里写图片描述
  本篇博客是承接上次的 Android 动画效果(一): 四种动画基础(Alpha、Translate、Rotate、Scale) 进行编写的。这里介绍的只不过是四种基础动画的动态设置、以及它的动画监听(setAnimationListener)、组合动画(AnimationSet)。
学习点:
动画的动态使用
动画监听
动画组合

在这篇博客中我将对动画的设置做一个更加详细的介绍。

一、AlphaAnimation(透明度)

这里写图片描述
参数:
fromAlpha:开始透明度(数值在0-1之间)
toAlpha:结束透明度(数值在0-1之间)

             //创建AlphaAnimation(透明度动画)
            AlphaAnimation animation=new AlphaAnimation(0.0f, 1.0f);
            //设置动画时间
            animation.setDuration(2000);
            //设置动画重复次数
            animation.setRepeatCount(2);
            //开启动画效果
            imageview.startAnimation(animation);

二、TranslateAnimation(平移)

这里写图片描述
参数:
fromXDela/toXDela:开始/结束的x坐标
fromYDela/toYDela:开始/结束的y坐标

//创建TranslateAnimation位移动画
            TranslateAnimation trananimation=new TranslateAnimation(-imageview.getMeasuredWidth(), 0,0,300);
            //设置动画时间
            trananimation.setDuration(2000);
            //设置是否记录移动后的位置,true时动画将停留在当前位置,false将回到开始位置
            trananimation.setFillAfter(true);
            //设置插值器,可以理解为用于改变运动形式的东西
            //(现在设置的运动形式类似于自由落体,会有弹跳效果)
            trananimation.setInterpolator(new BounceInterpolator());
            imageview.startAnimation(trananimation);

三、RotateAnimation(旋转)

这里写图片描述
参数:
fromDegrees/toDegrees:开始/结束角度
pivotX/pivotY:分别为旋转动画相对于x,y的坐标开始位置(相对值)
注:区别与X,Y:是绝对坐标

//参数:从0度旋转100度,旋转中心坐标(100,100)
RotateAnimation rotateAnimation=new RotateAnimation(0, 180, 100, 100);
            rotateAnimation.setDuration(2000);
            imageview.startAnimation(rotateAnimation);  

四、ScaleAnimation(放缩)

这里写图片描述

//参数:X轴从0.2倍放大到1倍(原图)Y轴也一样
ScaleAnimation scaleanimation=new ScaleAnimation(0.2f, 1f, 0.2f, 1f);
            scaleanimation.setDuration(2000);
            imageview.startAnimation(scaleanimation);

五、动画监听(setAnimationListener)

对位移动画添加动画监听器,动画完成就开始第二个动画

TranslateAnimation trananimation2=new TranslateAnimation(-imageview.getMeasuredWidth(), 0,0,100);
                trananimation2.setDuration(2000);
                //设置是否记录移动后的位置,true时动画将停留在原来位置
                trananimation2.setFillAfter(true);

                imageview.startAnimation(trananimation2);

    //监听动画trananimation2,当它运行完时开始第二个动画AlphaAnimation 
    trananimation2.setAnimationListener(new AnimationListener() {
                    //监听动画开始时弹出TOAST
                    @Override
                    public void onAnimationStart(Animation animation) {
                        Toast.makeText(getApplicationContext(), "动画展示开始", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {                    
                    }                   //动画结束时开启第二个
                    @Override
                    public void onAnimationEnd(Animation animation) {
                        AlphaAnimation animation2=new AlphaAnimation(0.0f, 1.0f);
                        animation2.setDuration(2000);
                        animation2.setRepeatCount(2);
                        imageview.startAnimation(animation2);                   

                    }
                });

六、AnimationSet动画组合

1、创建AnimationSet    2、添加动画

//创建几个动画效果
AlphaAnimation animation3=new AlphaAnimation(0.0f, 1.0f);
                animation3.setDuration(2000);
                animation3.setRepeatCount(2);
                //创建AnimationSet 动画组合
                AnimationSet set=new AnimationSet(true);
                TranslateAnimation trananimation3=new TranslateAnimation(-imageview.getMeasuredWidth(), 0,0,100);
                trananimation3.setDuration(2000);           
                RotateAnimation rotateAnimation2=new RotateAnimation(0, 360, 200, 200);
                rotateAnimation2.setDuration(2000);
            //添加组合动画
                set.addAnimation(animation3);
                set.addAnimation(trananimation3);
                set.addAnimation(rotateAnimation2);
                imageview.startAnimation(set);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值