每日一学(九)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中都有与其对应的方法。首先来看看与这四种动画所对应的类:
首先来看下它们的共有方法,也就是从Animation类继承的方法:
第一个参数:起始透明度。
第二个参数:结束透明度。
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
第一个参数:动画起始时 X坐标上的移动位置。
第二个参数:动画结束时 X坐标上的移动位置 。
第三个参数:动画起始时 Y坐标上的移动位置 。
第四个参数:动画结束时 Y坐标上的移动位置。
RotateAnimation
第一个参数:动画起始时的旋转角度
第二个参数:动画旋转到的角度
第三个参数:动画在X轴相对于物件位置类型
第四个参数:动画相对于物件的X坐标的开始位置
第五个参数:动画在Y轴相对于物件位置类型
第六个参数:动画相对于物件的Y坐标的开始位置
setDuration(long durationMills)
设置动画持续时间(单位:毫秒)
setFillAfter(Boolean fillAfter)
如果fillAfter的值为true,则动画执行后,控件将停留在执行结束的状态
setFillBefore(Boolean fillBefore)
如果fillBefore的值为true,则动画执行后,控件将回到动画执行之前的状态
setStartOffSet(long startOffSet)
设置动画执行之前的等待时间
setRepeatCount(int repeatCount)
设置动画重复执行的次数
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根标签 | 对应类 | 动画类型 |
---|---|---|
alpha | AlphaAnimation | 渐变透明度动画 |
scale | ScaleAnimation | 渐变缩放动画 |
translate | TranslateAnimation | 渐变位置移动动画效果 |
roate | RotateAnimation | 渐变旋转动画效果 |
xml属性 | 对应的方法 | 说明 |
---|---|---|
android:duration | setDuration(long) | 动画执行时间 |
android:fillEnabled | setFillEnabled(boolean) | 与fillBefore结合使用 |
android:fillBefore | setFillBefore(boolean) | 动画结束后是否停留在初始状态 |
android:fillAfter | setFillAfter(boolean) | 动画结束后是否停留在最后状态 |
android:repeatMode | setRepeatMode(int) | 动画重复的类型 |
android:repeatCount | setRepeatCount(int) | 动画重复的次数 |
android:interpolator | setInterpolator(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动画实现代码
- Android动画Animation之Tween用代码实现动画
- Android动画Animation之Tween用代码实现动画效果
- Android开发之Tween(补间动画)完全解析(下)——代码实现
- 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)代码中的实现
- 【Android 基础】Animation 动画介绍和实现【帧动画和Tween动画【在代码和xml中实现】】
- android基础笔记——补间动画(Tween)代码实现
- 每日一学(八) Android动画---Tween动画的xml实现
- Android Tween动画之RotateAnimation实现图片不停旋转
- Android代码实现删除抛掷动画
- Android tweened动画 示例代码
- Android Tween动画之RotateAnimation实现图片360°不停旋转
- Android Tween动画之RotateAnimation实现图片不停旋转
- Android Tween动画之RotateAnimation实现图片不停旋转效果实例介绍
- Android Tween动画之RotateAnimation实现图片不停旋转
- Android Tween动画之RotateAnimation实现图片不停旋转
- 实现android布局的左右拖动及动画效果的代码范例
- android 动画Animation硬代码实现示例
- Android --- Tween动画示例(代码中定义的动画)
- Android开发(26)--补间动画(Tween)的实现