The great pleasure in life is doing what people say you cannot do。
——人生最大的快乐是做到别人认为你做不到的事情。

1. 概述

Android的animation由四种类型组成:alpha、scale、translate、rotate,对应android官方文档地址:《Animation Resources》

alpha 渐变透明度动画效果
scale 渐变尺寸伸缩动画效果
translate 画面转移位置移动动画效果
rotate 画面转移旋转动画效果

动作文件的存放位置:
动作定义文件应该存放在res/anim文件夹下,访问时采用R.anim.XXX.xml的方式,位置如图

2. scale标签——调节尺寸

2.1 自有属性

scale标签是缩放动画,可以实现动态调控件尺寸的效果,有下面几个属性:

android:fromXScale 起始的X方向上相对自身的缩放比例,浮点值,比如1.0代表自身无变化,0.5代表起始时缩小一倍,2.0代表放大一倍;
android:toXScale 结尾的X方向上相对自身的缩放比例,浮点值;
android:fromYScale 起始的Y方向上相对自身的缩放比例,浮点值,
android:toYScale 结尾的Y方向上相对自身的缩放比例,浮点值;
android:pivotX 缩放起点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,当为数值时,表示在当前View的左上角,即原点处加上50px,做为起始缩放点;如果是50%,表示在当前控件的左上角加上自己宽度的50%做为起始点;如果是50%p,那么就是表示在当前的左上角加上父控件宽度的50%做为起始点x轴坐标。(具体意义,后面会举例演示)

android:pivotY 缩放起点Y轴坐标,取值及意义跟android:pivotX一样

<?xml version="1.0" encoding="utf-8"?><scale xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXScale="0.0"    android:toXScale="1.4"    android:fromYScale="0.0"    android:toYScale="1.4"    android:pivotX="50"    android:pivotY="50"    android:duration="700" />

pivotX取值数值时(50)

这个控件,宽度和高度都是从0放大到1.4倍,起始点坐标在控件左上角(坐标原点),向x轴正方向和y轴正方向都加上50像素;

根据pivotX,pivotY的意义,控件的左上角即为控件的坐标原点,这里的起始点是在控件的原点的基础上向X轴和Y轴各加上50px,做为起始点,如下图中图二所示


pivotX取值百分数时(50%)
pivotX的值,当取50%时,表示在原点坐标的基础上加上的自己宽度的50%

<?xml version="1.0" encoding="utf-8"?><scale xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXScale="0.0"    android:toXScale="1.4"    android:fromYScale="0.0"    android:toYScale="1.4"    android:pivotX="50%"    android:pivotY="50%"    android:duration="700" />



pivotX取值50%p时

当取值在百分数后面加上一个字母p,就表示,取值的基数是父控件,即在原点的基础上增加的值是父标签的百分值。

<?xml version="1.0" encoding="utf-8"?><scale xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXScale="0.0"    android:toXScale="1.4"    android:fromYScale="0.0"    android:toYScale="1.4"    android:pivotX="50%p"    android:pivotY="50%p"    android:duration="700" />

2.2 从Animation类继承的属性

Animation类是所有动画(scale、alpha、translate、rotate)的基类,这里以scale标签为例,讲解一下,Animation类所具有的属性及意义。关于Animation类的官方文档位置为:《Animation》

android:duration 动画持续时间,以毫秒为单位
android:fillAfter 如果设置为true,控件动画结束时,将保持动画最后时的状态
android:fillBefore 如果设置为true,控件动画结束时,还原到开始动画前的状态
android:fillEnabled 与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态
android:repeatCount 重复次数
android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。

android:interpolator 设定插值器,其实就是指定的动作效果,比如弹跳效果等

android:fillAfter:保持动画结束的状态

<?xml version="1.0" encoding="utf-8"?><scale xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXScale="0.0"    android:toXScale="1.4"    android:fromYScale="0.0"    android:toYScale="1.4"    android:pivotX="50%"    android:pivotY="50%"    android:duration="700"     android:fillAfter="true"    />

android:repeatMode=“restart /reverse” 设定回放类型

<?xml version="1.0" encoding="utf-8"?><scale xmlns:android="http://schemas.android.com/apk/res/android"    android:fromXScale="0.0"    android:toXScale="1.4"    android:fromYScale="0.0"    android:toYScale="1.4"    android:pivotX="50%"    android:pivotY="50%"    android:duration="700"     android:fillBefore="true"    android:repeatCount="1"    android:repeatMode="restart"/>

androidRepeatMode设为restart

androidRepeatMode设为reverse

3. alpha标签—调节透明度

3.1 自身属性

  • android:fromAlpha 动画开始的透明度,从0.0 --1.0 ,0.0表示全透明,1.0表示完全不透明
  • android:toAlpha 动画结束时的透明度,也是从0.0 --1.0 ,0.0表示全透明,1.0表示完全不透明
<?xml version="1.0" encoding="utf-8"?><alpha xmlns:android="http://schemas.android.com/apk/res/android"    android:fromAlpha="1.0"    android:toAlpha="0.1"    android:duration="3000"    android:fillBefore="true">alpha>

4. rotate标签—旋转

4.1 自身属性

android:fromDegrees 开始旋转的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数
android:toDegrees 结束时旋转到的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数
android:pivotX 缩放起点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,具体意义已在scale标签中讲述

android:pivotY 缩放起点Y轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p

<?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:fromDegrees="0"    android:toDegrees="-650"    android:pivotX="50%"    android:pivotY="50%"    android:duration="3000"    android:fillAfter="true">    rotate>

围绕自身从0度逆时针旋转650度
围绕自身从0度顺时针旋转650度

5. translate标签—平移

5.1 自身属性

android:fromXDelta 起始点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,具体意义已在scale标签中讲述,这里就不再重讲
android:fromYDelta 起始点Y轴从标,可以是数值、百分数、百分数p 三种样式;
android:toXDelta 结束点X轴坐标

android:toYDelta 结束点Y轴坐标

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

6. set标签—定义动作集合

前面讲述了各个标签动画的意义及用法,且独立对控件起作用,如果想要同时对某一控件起作用,这时候就需要对指定的控件定义动作合集,Set标签可以将几个不同的动作定义为一个组。

set标签自已是没有属性的,他的属性都是从Animation继承而来,但当它们用于Set标签时,就会对Set标签下的所有子控件都产生作用

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="3000"    android:fillAfter="true">      <alpha     android:fromAlpha="0.0"    android:toAlpha="1.0"/>    <scale    android:fromXScale="0.0"    android:toXScale="1.4"    android:fromYScale="0.0"    android:toYScale="1.4"    android:pivotX="50%"    android:pivotY="50%"/>    <rotate    android:fromDegrees="0"    android:toDegrees="720"    android:pivotX="50%"    android:pivotY="50%"/>       set>

7. 实例

新建工程,工程结构为


具体代码见:Github

更多相关文章

  1. Android(安卓)Activity界面切换添加动画特效
  2. 三、安卓UI学习(1)
  3. android实现字体闪烁动画的方法
  4. android用户界面之按钮(Button)教程实例汇
  5. 在Fragment中设置控件点击方法,执行失败。
  6. TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
  7. Android:interpolator用法
  8. Android常用控件
  9. android用户界面-组件Widget-画廊视图Gallery

随机推荐

  1. centos上安装mysql并设置远程访问的操作
  2. 详解MySQL中EXPLAIN解释命令及用法讲解
  3. mysql 无法联接常见故障及原因分析
  4. MySQL使用中遇到的问题记录
  5. MySQL百万级数据分页查询优化方案
  6. mysql5.7.20 安装配置方法图文教程(mac)
  7. linux下安装mysql数据库5.6源码安装,修改
  8. mysql备份脚本 mysqldump使用方法详解
  9. mysql 5.7.20 win64 安装及配置方法
  10. Mysql5.7解压版的安装和卸载及常见问题小