您的位置:首页 > 移动开发 > Android开发

每日一学(九)Android动画---Tween动画的代码实现

2017-06-19 19:49 417 查看
       在之前的博客中,我们已经知道了Android动画的分类,并用xml实现了android中的Tween动画:

       android 动画设计概述:  http://blog.csdn.net/u010838555/article/details/73468066

       android 动画---Tween动画的xml实现:http://blog.csdn.net/u010838555/article/details/73469811

      这里我们记录一下Tween动画的代码实现。

      Tween动画的分类:alpha(渐变)、scale(缩放)、translate(位移)、rotate(旋转),这四种动画都有从Animation继承过来的公共的方法,又拥有其独特的方法。其实针对我们在xml中的配置,在Android中都有与其对应的方法。首先来看看与这四种动画所对应的类:

xml根标签对应类动画类型
alphaAlphaAnimation渐变透明度动画
scaleScaleAnimation渐变缩放动画
translateTranslateAnimation渐变位置移动动画效果
roateRotateAnimation渐变旋转动画效果
首先来看下它们的共有方法,也就是从Animation类继承的方法:
xml属性对应的方法说明
android:durationsetDuration(long)动画执行时间
android:fillEnabledsetFillEnabled(boolean)与fillBefore结合使用
android:fillBeforesetFillBefore(boolean)动画结束后是否停留在初始状态
android:fillAftersetFillAfter(boolean)动画结束后是否停留在最后状态
android:repeatModesetRepeatMode(int)动画重复的类型
android:repeatCountsetRepeatCount(int)动画重复的次数
android:interpolatorsetInterpolator(Interpolator)动画插值器


根据以上对应关系及上篇博客中的属性介绍,我们可以很灵活的在代码中设置我们想要的效果


AlphaAnimation

        
AlphaAnimation alphaAnimation=new AlphaAnimation(0,1);
alphaAnimation.setDuration(3000);
alphaAnimation.setRepeatCount(2);
alphaAnimation.setFillAfter(true);
ivImage.setAnimation(alphaAnimation);
        

   
第一个参数:起始透明度。
第二个参数:结束透明度。
0.0f 全透明

1.0f 不透明

ScaleAnimation

        ScaleAnimation scaleAnimation=new ScaleAnimation(0.0f,1.0f,0.0f,1.0f,
ScaleAnimation.RELATIVE_TO_SELF,1.0f,ScaleAnimation.RELATIVE_TO_SELF,0.0f);
scaleAnimation.setDuration(1000);
imageView.startAnimation(scaleAnimation); 
第一个参数:起始时 X坐标上的伸缩尺寸。
第二个参数:结束时 X坐标上的伸缩尺寸。
第三个参数:起始时 Y坐标上的伸缩尺寸。
第四个参数:结束时 Y坐标上的伸缩尺寸。
0.0f表示收缩到没有

1.0f表示正常无伸缩

值小于1.0f表示收缩

值大于1.0f表示放大

第五个参数:动画在X轴相对于物件位置类型 。
第六个参数:动画相对于物件的X坐标的开始位置。
第七个参数:动画在Y轴相对于物件位置类型 。
第八个参数:动画相对于物件的Y坐标的开始位置。
0.0f,0.0f 在左上角

0.0f,1.0f 在左下角

1.0f,1.0f 在右下角

0.5f,0.5f 在中间

TranslateAnimation
    
TranslateAnimation translateAnimation=new TranslateAnimation(0,100,0,100);
translateAnimation.setDuration(1000);
translateAnimation.setInterpolator(this, android.R.anim.cycle_interpolator);
translateAnimation.setFillAfter(true);
imageView.startAnimation(translateAnimation);
  
第一个参数:动画起始时 X坐标上的移动位置。
第二个参数:动画结束时 X坐标上的移动位置 。
第三个参数:动画起始时 Y坐标上的移动位置 。
第四个参数:动画结束时 Y坐标上的移动位置。
RotateAnimation

RotateAnimation rotateAnimation=new RotateAnimation(0.0f,360.0f,
Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(3000);
rotateAnimation.setFillAfter(true);
imageView.startAnimation(rotateAnimation);

第一个参数:动画起始时的旋转角度
第二个参数:动画旋转到的角度
第三个参数:动画在X轴相对于物件位置类型
第四个参数:动画相对于物件的X坐标的开始位置
第五个参数:动画在Y轴相对于物件位置类型
第六个参数:动画相对于物件的Y坐标的开始位置


通用方法

setDuration(long durationMills)

设置动画持续时间(单位:毫秒)
setFillAfter(Boolean fillAfter)

如果fillAfter的值为true,则动画执行后,控件将停留在执行结束的状态
setFillBefore(Boolean fillBefore)

如果fillBefore的值为true,则动画执行后,控件将回到动画执行之前的状态
setStartOffSet(long startOffSet)

设置动画执行之前的等待时间
setRepeatCount(int repeatCount)

设置动画重复执行的次数


AnimationSet 实现多种动画混合效果可


   
可同时播放,也可以给不同动画分别设置 setStartOffset() 开始偏移来顺序播放。

AnimationSet animationSet=new AnimationSet(true);

AlphaAnimation alphaAnimation=AnimationUtils.loadAnimation(this, R.anim.alpha);
ScaleAnimation scaleAnimation=AnimationUtils.loadAnimation(this, R.anim.scale);
TranslateAnimation translateAnimation=new TranslateAnimation(0,100,0,100);
RotateAnimation rotateAnimation=new RotateAnimation(0.0f,360.0f,
Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF, 0.5f);

alphaAnimation.setStartOffset(0);
scaleAnimation.setStartOffset(2000);
translateAnimation.setStartOffset(4000);
rotateAnimation.setStartOffset(6000);

animationSet.addAnimation(translateAnimation);
animationSet.addAnimation(alphaAnimation);
animationSet.addAnimation(rotateAnimation);
animationSet.addAnimation(scaleAnimation);

animationSet.setInterpolator(this, android.R.anim.anticipate_interpolator);
animationSet.setDuration(2000);
imageView.startAnimation(animationSet);


  

虽然可以通过代码的方式定义动画,但是Android官方还是建议在xml中定义动画效果,这样可做到最大程度上的解耦,方便项目的后期维护。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android Tween 动画 代码