Tween Animation(补间动画):

Tween动画,通过对View的内容进行一系列的图形变换 (包括平移、缩放、旋转、改变透明度)来实现动画效果。动画效果的定义可以采用XML来做也可以采用编码来做。

动画类型 XML配置方式 Java代码实现方式
渐变透明度动画效果 <alpha/> AlphaAnimation
渐变尺寸缩放动画效果 <scale/> ScaleAnimation
画面旋转动画效果 <rotate/> RotateAnimation
画面位置移动动画效果 <translate/> TranslateAnimation
组合动画效果 <set/> AnimationSet

下面以java 和 xml 的方式具体说下使用

1 平移动画

'效果图如下

1.1 java的方法实现

 //平移动画/*** java代码实现*/TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, 600);translateAnimation.setRepeatMode(Animation.REVERSE);// 设置动画模式 这里是动画重复translateAnimation.setRepeatCount(5); // 设置动画的次数 当为-1的时候重复动画translateAnimation.setFillAfter(true); // 设置为false的时候动画走走完回到原来的位置,true是动画结束之后位置不会改变translateAnimation.setDuration(2000); // 动画持续时间img.startAnimation(translateAnimation); // 开始动画

这样就实现了上下移动的动画,其他的移动设置参数即可

1.2 以xml 的方法实现

首先在res 目录下创建一个anim 目录然后在创建一个xx.xml 的文件里面内容如下

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"android:duration="2000"android:fillBefore="true"android:fromXDelta="0"android:fromYDelta="0"android:toXDelta="0"android:toYDelta="600" />

当然最外层也可以添加一个set 这个看个人习惯把

android:duration="2000" ---->动画持续时间
android:fillBefore="true" ---> 如果fillBefore的值为true,则动画执行后,控件将回到动画执行之前的状态 和fillAfter类似不过true和false 功能却相反的
android:fromXDelta="0" ---->起始时X座标
android:fromYDelta="0"---->起始时Y座标
android:toXDelta="0"---->结束时X座标
android:toYDelta="600"---->结束时Y座标

然后java 内容

 TranslateAnimation translateAnimation = (TranslateAnimation) AnimationUtils.loadAnimation(TweenActivity.this, R.anim.translate);translateAnimation.setFillAfter(true);img.startAnimation(translateAnimation);

2  渐变透明度动画

效果如下

2.1 以java 实现

  //透明度动画AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0.5f);alphaAnimation.setRepeatMode(Animation.REVERSE); // 设置动画的次数 当为-1的时候重复动画alphaAnimation.setFillAfter(true); // 设置为false的时候动画走走完回到原来的位置,true是动画结束之后位置不会改变alphaAnimation.setDuration(2000); // 动画持续时间img.startAnimation(alphaAnimation);

2.2 以xml 方式实现

首先在res 目录下创建一个anim 目录然后在创建一个xx.xml 的文件里面内容如下

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"android:duration="3000"android:fillBefore="true"android:fromAlpha="1.0"android:toAlpha="0.1"/>
android:duration="3000"  ---->动画持续时间
android:fillBefore="true" ----->如果fillBefore的值为true,则动画执行后,控件将回到动画执行之前的状态 和fillAfter类似不过true和false 功能却相反的
android:fromAlpha="1.0"------>开始时透明度
android:toAlpha="0.1"------->结束时透明度

java 代码

 AlphaAnimation alphaAnimation = (AlphaAnimation) AnimationUtils.loadAnimation(TweenActivity.this, R.anim.alpha);img.startAnimation(alphaAnimation);

3 缩放动画

效果如下

3.1 以java 代码实现

 //缩放动画ScaleAnimation scaleAnimation = new ScaleAnimation(1, 2, 1, 2, Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_SELF);scaleAnimation.setRepeatMode(Animation.REVERSE); // 设置动画模式 这里是动画重复scaleAnimation.setRepeatCount(5); // 设置动画的次数 当为-1的时候重复动画scaleAnimation.setFillAfter(true); // 设置为false的时候动画走走完回到原来的位置,true是动画结束之后位置不会改变scaleAnimation.setDuration(2000); // 动画持续时间img.startAnimation(scaleAnimation);

3.2 以xml 代码实现

首先在res 目录下创建一个anim 目录然后在创建一个xx.xml 的文件里面内容如下

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"android:duration="700"android:fromXScale="1.0"android:fromYScale="1.0"android:pivotX="50"android:pivotY="50"android:toXScale="0.0"android:toYScale="0.0" />
android:duration="700" ---->动画持续时间
android:fromXScale="1.0" --->开始前X的缩放,0.0为不显示, 1.0为正常大小
android:fromYScale="1.0"--->开始前Y的缩放,0.0为不显示, 1.0为正常大小
android:pivotX="50"  ---> 动画起始位置,相对于屏幕的百分比,两个都为50%表示动画从自身中间开始
android:pivotY="50"
android:toXScale="0.0" --->动画最终缩放的倍数, 1.0为正常大小,大于1.0放大
android:toYScale="0.0"

java 代码调用

   ScaleAnimation scaleAnimation = (ScaleAnimation) AnimationUtils.loadAnimation(TweenActivity.this, R.anim.scale);img.startAnimation(scaleAnimation);

4 旋转动画

效果如下

4.1 以java 代码实现

  RotateAnimation rotateAnimation = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_SELF);rotateAnimation.setRepeatMode(Animation.REVERSE); // 设置动画模式 这里是动画重复rotateAnimation.setRepeatCount(5); // 设置动画的次数 当为-1的时候重复动画rotateAnimation.setRepeatMode(Animation.REVERSE); // 设置动画的次数 当为-1的时候重复动画rotateAnimation.setFillAfter(true); // 设置为false的时候动画走走完回到原来的位置,true是动画结束之后位置不会改变rotateAnimation.setDuration(2000); // 动画持续时间img.startAnimation(rotateAnimation);

4.2 以xml 代码实现

首先在res 目录下创建一个anim 目录然后在创建一个xx.xml 的文件里面内容如下

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"android:duration="3000"android:fillAfter="true"android:fromDegrees="0"android:pivotX="50%"android:pivotY="50%"android:toDegrees="-650"/>
android:duration="3000" ---->动画持续时间
android:fillAfter="true"
android:fromDegrees="0" ----->动画开始时的角度
android:pivotX="50%" ----->属性为动画相对于物件的X坐标的开始位置
android:pivotY="50%"----->属性为动画相对于物件的Y坐标的开始位置
android:toDegrees="-650" ---->动画结束时物件的旋转角度,正代表顺时针 负代表逆时针

java 代码调用xml

 RotateAnimation rotateAnimation = (RotateAnimation) AnimationUtils.loadAnimation(TweenActivity.this, R.anim.rotate);img.startAnimation(rotateAnimation);

5 上面的几个属性可以合在一起实现效果

5.1 java 代码

 ScaleAnimation scaleAnim = new ScaleAnimation(1, 2, 1, 2, Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_SELF);scaleAnim.setRepeatMode(Animation.REVERSE);scaleAnim.setFillAfter(true);scaleAnim.setDuration(2000);scaleAnim.setRepeatCount(1);AlphaAnimation alphaAnim = new AlphaAnimation(1, 0.5f);alphaAnim.setRepeatMode(Animation.REVERSE);alphaAnim.setFillAfter(true);alphaAnim.setDuration(2000);alphaAnim.setRepeatCount(1);AnimationSet set = new AnimationSet(true);set.addAnimation(scaleAnim);set.addAnimation(alphaAnim);img.startAnimation(set);

5.2 以xml 代码实现

首先在res 目录下创建一个anim 目录然后在创建一个xx.xml 的文件里面内容如下

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:fillAfter="true"><!-- 各种单独特效的杂糅 --><alphaandroid:duration="1000"android:fromAlpha="0.1"android:toAlpha="1" /><rotateandroid:duration="1000"android:fromDegrees="0"android:pivotX="50%"android:pivotY="50%"android:toDegrees="720" /><scaleandroid:duration="1000"android:fromXScale="0.1"android:fromYScale="0.1"android:toXScale="1.0"android:toYScale="1.0" /><translateandroid:duration="1000"android:fillAfter="true"android:fromXDelta="0"android:fromYDelta="0"android:toXDelta="0"android:toYDelta="600" />
</set>

java 代码调用xml

 Animation mutipleAnimation = AnimationUtils.loadAnimation(TweenActivity.this, R.anim.set);img.startAnimation(mutipleAnimation);

具体的可以看下demo github 链接地址点击查看

Android 补间动画(Tween Animation)相关推荐

  1. android 补间动画有停顿,Android动画原理分析(一)----补间动画

    1.基本特点 补间动画(Tween动画),是android最早的动画框架,从Android1.0开始就有. 功能:可以实现移动.旋转.缩放.渐变四种效果以及这四种效果的组合形式. 实现形式:xml和代 ...

  2. Android平移补间动画,Android 补间动画之平移动画TranslateAnimation

    Android动画系列 博客导航: 1.介绍: Android补间动画之平移动画,在实际的开发过程中,其实有好多地方需要用到平移动画,这是对于平移动画的简单介绍. 2.属性 duration 时间 f ...

  3. android image 位移动画_「translateanimation」Android 补间动画之平移动画TranslateAnimation - seo实验室...

    translateanimation 博客导航: 1.介绍: Android补间动画之平移动画,在实际的开发过程中,其实有好多地方需要用到平移动画,这是对于平移动画的简单介绍. 2.属性 durati ...

  4. android—补间动画(Tween Animation)旋转的血轮眼

    Android系统提供了两种实现动画的方式,一种是补间动画(Tween Animation),另一种是帧动画(Frame Animation).补间动画可以实现View组件的移动.放大.缩小以及渐变等 ...

  5. Android补间动画

    概述 本篇博客基于<Android开发艺术探索>,将会介绍以下两种动画: 补间动画 帧动画 事实上帧动画也是补间动画的一种,但是它们的使用方式略有不同,所以将它们分开介绍. 一.补间动画 ...

  6. 每日一道面试题(第7期)---Android补间动画与属性动画的区别

    零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...

  7. Android补间动画笔记

    布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...

  8. android 属性动画 补间动画,每日一道面试题(第7期)---Android补间动画与属性动画的区别...

    零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...

  9. Android 补间动画

    补间动画使用很简单,几行代码便能实现效果,上图上代码: xml很简单,不用说,先给每个按钮加上点击监听 findViewById(R.id.rotateBtn).setOnClickListener( ...

最新文章

  1. hdu3336 KMP + DP 前缀数组出现的次数
  2. 【Py面试题】找到数组或整数列表中连续子序列的最大和
  3. C# asp:Repeater DataSource ListT
  4. Lockdoor Framework:一套自带大量网络安全资源的渗透测试框架
  5. 信息学奥赛一本通C++语言——1030: 计算球的体积
  6. 【SpringMVC框架】注解的处理器映射器和适配器配置
  7. 云计算学习总结(1)——PaaS云平台部署之在Centos7搭建Mesos+Zookeeper+Marathon+Docker单机集群...
  8. 自己动手写Docker系列 -- 4.2使用AUFS包装busybox
  9. redis thinkphp mysql_Thinkphp5怎么扩展Redis数据库,实现Redis的CURD操作
  10. 威胁情报 设备之外的安全能力
  11. K-meas聚类算法极简介绍
  12. 常用关系型数据库管理系统
  13. 为什么说精益管理模式是适合中国企业的管理方法(zt)
  14. 异方差检验 python_stata教程03-异方差的检验和处理
  15. 人生苦难重重,如何解决人生的问题?| 读《少有人走的路:心智成熟的旅程》
  16. 保险与赌博的差异,航延险是赌博吗?
  17. elasticsearch-head离线安装
  18. 计算机网络——分层的体系结构(OSI模型/五层协议栈)
  19. SBUS协议(20200210)
  20. 解决升级Chrome浏览器之后出现跨域错误:Access to xxx has been blocked by CORS policy: XXXX

热门文章

  1. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几
  2. 二进制与十进制的小数位怎么转?
  3. Ubuntu18彻底删除MySQL5.7数据库
  4. Object的finalize()方法的作用是否与C++的析构函数作用相同
  5. 2022-2028年中国综艺节目市场深度调研及投资前景预测报告
  6. 数据结构(07)— 线性顺序表基本操作
  7. Go 知识点(11) — goroutine 泄露、设置子协程退出条件
  8. CUDA 7流简化并发
  9. 视频处理器为电池供电的设计提供4K视频编码
  10. Mybatis的各种查询功能