【Tween Animation 变化动画】
2016-07-11 16:56
351 查看
1、 本文要完成的任务有:
(1) 缩放动画
(2) 透明度动画
(3) 旋转动画
(4) 位移动画
(5) 组合动画1 (动画监听器实现)
(6) 组合动画2 (set标签 + startOffset属性 实现)
(7) 闪烁动画
(8) 抖动动画
2、 效果展示gif图如下:
3、 任务具体实现:
动画xml定义文件全部都放在res/anim目录下。
(1) 缩放动画
scale.xml动画文件定义:
Activity中获取动画对象然后播放代码:
(2) 透明度动画
alpha.xml动画文件定义:
Activity中获取动画对象代码:
(3) 旋转动画
rotate.xml动画文件定义:
Activity中获取动画对象代码:
(4) 位移动画
translate.xml动画文件定义:
Activity中获取动画对象代码:
(5) 组合动画1
动画组合原理:两个独立动画,为第一个动画设置动画监听器,当监听到第一个动画播放完毕,开始播放第二个动画。
代码如下:
(6) 组合动画2
动画组合原理:动画本身xml定义就是一个组合动画,所以只用直接播放组合动画即可。
comb_anim2.xml组合动画文件定义:
Activity中获取动画对象代码:
(7) 闪烁动画
实现方式没有去定义动画xml文件,而是用等效的java代码来实现:
(8) 抖动动画
实现方式没有去定义动画xml文件,而是用等效的java代码来实现:
01_TweenAnimation变化动画Demo代码下载
(1) 缩放动画
(2) 透明度动画
(3) 旋转动画
(4) 位移动画
(5) 组合动画1 (动画监听器实现)
(6) 组合动画2 (set标签 + startOffset属性 实现)
(7) 闪烁动画
(8) 抖动动画
2、 效果展示gif图如下:
3、 任务具体实现:
动画xml定义文件全部都放在res/anim目录下。
(1) 缩放动画
scale.xml动画文件定义:
<scale xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromXScale="0.0" android:fromYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:toXScale="1.0" android:toYScale="1.0" > </scale> <!-- duration 动画持续时间 fromXScale x方向上开始时候的大小 fromYScale y方向上开始时候的大小 pivotX x方向上缩放的中心位置 pivotY y方向上缩放的中心位置 toXScale x方向上结束时候的大小 toYScale y方向上结束时候的大小-->
Activity中获取动画对象然后播放代码:
//缩放动画 animation = AnimationUtils.loadAnimation(this, R.anim.scale); //获取动画对象 if(animation != null){ //开始播放动画 imageView.startAnimation(animation); }
(2) 透明度动画
alpha.xml动画文件定义:
<?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromAlpha="0.0" android:toAlpha="1.0"> </alpha> <!-- duration 动画持续时间 fromAlpha 开始透明度值 toAlpha 结束透明度值 -->
Activity中获取动画对象代码:
//透明度动画 animation = AnimationUtils.loadAnimation(this, R.anim.alpha); //获取动画对象
(3) 旋转动画
rotate.xml动画文件定义:
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromDegrees="0" android:toDegrees="+360" android:pivotX="50%" android:pivotY="50%"> </rotate> <!-- duration 动画持续时间 fromDegrees 起始时的角度 toDegrees 结束时的角度 pivotX x方向上旋转的中心位置 pivotY y方向上旋转的中心位置-->
Activity中获取动画对象代码:
//旋转动画 animation = AnimationUtils.loadAnimation(this, R.anim.rotate); //获取动画对象
(4) 位移动画
translate.xml动画文件定义:
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromXDelta="10" android:fromYDelta="10" android:toXDelta="100" android:toYDelta="100"> </translate> <!-- duration 动画持续时长 fromXDelta 起始x相对坐标 fromYDelta 起始y相对坐标 toXDelta 结束x相对坐标 toYDelta 结束y相对坐标-->
Activity中获取动画对象代码:
//位移动画 animation = AnimationUtils.loadAnimation(this, R.anim.translate); //获取动画对象
(5) 组合动画1
动画组合原理:两个独立动画,为第一个动画设置动画监听器,当监听到第一个动画播放完毕,开始播放第二个动画。
代码如下:
//组合动画1 //动画组合原理:两个独立动画,为第一个动画设置动画监听器,当监听到第一个动画播放完毕,开始播放第二个动画 Animation animation1 = AnimationUtils.loadAnimation(this, R.anim.translate); final Animation animation2 = AnimationUtils.loadAnimation(this, R.anim.rotate); //为animation1设置动画监听器 animation1.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animation animation) { //当动画播放结束时 imageView.startAnimation(animation2); } }); //开始播放第一个动画 imageView.startAnimation(animation1);
(6) 组合动画2
动画组合原理:动画本身xml定义就是一个组合动画,所以只用直接播放组合动画即可。
comb_anim2.xml组合动画文件定义:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="2000" android:fromXDelta="10" android:fromYDelta="10" android:toXDelta="100" android:toYDelta="100"> </translate> <rotate android:duration="2000" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="+360" android:startOffset="3000"> </rotate> <!-- 注意这里一定要设置startOffset,并且要大于第一个动画播放的时间,不然两个动画会一起播放 --> </set>
Activity中获取动画对象代码:
//组合动画2 //动画组合原理:动画本身xml定义就是一个组合动画,所以只用直接播放组合动画即可 animation = AnimationUtils.loadAnimation(this, R.anim.comb_anim2); //获取动画对象
(7) 闪烁动画
实现方式没有去定义动画xml文件,而是用等效的java代码来实现:
//闪烁动画 //定义一个透明度变化动画,从透明到不透明 AlphaAnimation alphaAnimation = new AlphaAnimation(0.1f, 1.0f); //定义动画播放时长 alphaAnimation.setDuration(100); //定义动画播放重复次数 alphaAnimation.setRepeatCount(16); //定义动画正序重复还是倒序重复 REVERSE为倒序重复 RESTART为正序重复 alphaAnimation.setRepeatMode(Animation.REVERSE); //开始播放动画,就是闪烁的效果 imageView.startAnimation(alphaAnimation);
(8) 抖动动画
实现方式没有去定义动画xml文件,而是用等效的java代码来实现:
//抖动动画 //定义一个位移变化动画,从x方向的左边到右边 TranslateAnimation translateAnimation = new TranslateAnimation(-30, 30, 0, 0); //定义动画播放时长 translateAnimation.setDuration(100); //定义动画播放重复次数 translateAnimation.setRepeatCount(16); //定义动画倒序重复 translateAnimation.setRepeatMode(Animation.REVERSE); //开始播放动画 imageView.startAnimation(translateAnimation);
01_TweenAnimation变化动画Demo代码下载
相关文章推荐
- jenkins 安装,配置 和 运行 & Build Pipeline 插件的使用
- The CPU has been disabled by the guest operating system. You will need to power off or reset the vir
- 我的python学习--第二天(list)
- spring中@param和mybatis中@param使用区别
- 去除ArrayList集合中的重复元素
- scss 命令行参数 no-cache
- ACM:平衡树(1)——Treap
- 使用命令生成puppet.conf无法启动puppet master问题解决
- maven异常
- Ubuntu 14.04 Trusty安装java环境
- Linus的redHat在root出现错误:-bash: addgroup: command not found
- Spring管理 hibernate 事务配置的五种方式
- 关于VSAN 6.x版本里一个针对SSD性能不足时的写入保护导致强行Unmount VSAN磁盘问题
- 获取本机的全部环境属性
- php.ini参数调优
- 百度逆地址解析
- Processing Bitmaps Off the UI Thread
- C++中重载、重写(覆盖)和隐藏的区别实例分析
- JS函数的定义与调用方法
- 个推+DCLOUD,推送消息和透传消息