Android之Animation动画各属性的参数意思(二)
现在就来讲讲Animation里这四个标签的属性。
一、这四个标签alpha、scale、translate、rotate共有的属性为:
- android:duration 动画持续时间,以毫秒为单位
 - android:fillAfter 如果设置为true,控件动画结束时,将保持动画最后时的状态
 - android:fillBefore 如果设置为true,控件动画结束时,还原到开始动画前的状态
 - android:fillEnabled 与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态
 - android:repeatCount 重复次数
 - android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。
 - android:interpolator 设定插值器,其实就是指定的动作效果,比如弹跳效果等。
 
现在来分别单独讲这四个标签:【注】我们先说下android下的x与y坐标的划分规则,一个控件不管是什么控件还是布局什么的,它的原点坐标都是该控件的左上角为原点,然后,x轴:左边为负坐标右边为正坐标,y轴:下面为正上面为负。
二、scale标签——调节尺寸
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一样。
 
下面看一个实例,当scale里的属性这样设置时,效果会怎样呢:
- <?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" />
 
(1)、pivotX取值数值时(50)
这个控件,宽度和高度都是从0放大到1.4倍,起始点坐标在控件左上角(坐标原点),向x轴正方向和y轴正方向都加上50像素;
根据pivotX,pivotY的意义,控件的左上角即为控件的坐标原点,这里的起始点是在控件的原点的基础上向X轴和Y轴各加上50px,做为起始点,如下图中图二所示
图一                                                             图二
    
(2)、pivotX取值百分数时(50%)
下面再看看当pivotX、pivotY取百分数的时候,起始点又在哪里?
上面我们讲了,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" />
 
缩放位置大小仍然从0-1.4,只改变pivotX和pivotY;起始点位置如下图中图二所示:
图一 图二
   
(3)、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" />
 
效果图,及起始点坐标图如下所示:
        
对于android:duration,就不再讲解了,就是动画的持续时长,以毫秒为单位,下面看看android:fillAfter和android:fillBefore
(1)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"
 - />
 
(2)android:fillBefore 还原初始化状态
- <?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:fillBefore="true" android:fillEnable="true"
   
上面顺便列出了,当仅设定fillEanble为true时的效果,这两个的标签的效果完全相同。
(3)、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
 
      
三、alpha标签——调节透明度
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>
 
四、rotate标签——旋转
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度
android:fromDegrees="0" android:fromDegrees="0"
android:toDegrees="-650" android:toDegrees="650"
     
五、translate标签 —— 平移
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>
 
六、set标签——定义动作合集
前面我们讲解了各个标签动画的意义及用法,但他们都是独立对控件起作用,假设我现在想上面的textView控件做一个动画——从小到大,旋转出场,而且透明度也要从0变成1,即下面的这个效果,该怎么办?
这就需要对指定的控件定义动作合集,Set标签就可以将几个不同的动作定义成一个组;
这个效果,所对应的XML代码为:
- <?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>
 
好了,各个标签的属性也都介绍完了,是不是比较简单啊!!!
禁止转载--------
Android之Animation动画各属性的参数意思(二)的更多相关文章
- Android Property Animation动画
		
3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这三 ...
 - Android之Animation动画的使用(一)
		
我们在使用一些控件时候,难免会设置一些进入和退出的动画效果,比如popupwindow.listview的item动画.按钮.图片等等,要使这些控件有动画效果,当然需要用到Animation了. 下面 ...
 - android中Animation动画的连续播放与播放完毕后停留在最后的状态
		
我们做安卓应用的苦逼程序员们常常会需要用到Animation也就是动画.比如做地图功能的时候.我们在手机旋转时需要根据手机重力感应来调整地图的角度,让它上面的“北”一直指向地球的北面...好多人做动画 ...
 - 超级强大的SVG SMIL animation动画详解
		
本文花费精力惊人,具有先驱前瞻性,转载规则以及申明见文末,当心予以追究.本文地址:http://www.zhangxinxu.com/wordpress/?p=4333 //zxx: 本文的SVG在有 ...
 - [转]超级强大的SVG SMIL animation动画详解
		
超级强大的SVG SMIL animation动画详解 本文花费精力惊人,具有先驱前瞻性,转载规则以及申明见文末,当心予以追究.本文地址:http://www.zhangxinxu.com/wordp ...
 - 自定义动画css属性
		
自定义动画: 1.animation-name(自定义动画名称) 元素所应用的动画名称,必须与@keyframes使用,名称由@keyframes定义. keyframes(动画关键帧):以@keyf ...
 - css动画效果之transition(动画效果属性)
		
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - Android动画效果之Property Animation进阶(属性动画)
		
前言: 前面初步认识了Android的Property Animation(属性动画)Android动画效果之初识Property Animation(属性动画)(三),并且利用属性动画简单了补间动画 ...
 - Android动画基础——属性动画(Property Animation)
		
本篇涉及例子下载:Github 本篇讲android 3.0引入的属性动画框架,上篇写视图动画View Animation时就说过ViewAnimation的缺点,那就是动画作用的是view本身的视觉 ...
 
随机推荐
- Centos常用命令之:文件操作
			
在centos中,常用的文件操作命令有: ◇touch:建置新文件或者修改文件时间◇cat:从第一行开始显示文件内容◇tac:从最后一行开始显示文件内容,和cat相反◇nl:显示的时候,顺道输出行号◇ ...
 - [JSOI2008]球形空间产生器
			
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...
 - [Codeforces]852I - Dating
			
题目大意:给定一棵n个点的树,每个点上有一个汉子或妹子,每人有一个权值,每次询问一条链上选出一对权值相等的男女有多少种选法.(n,q<=10^5) 做法:比较显然的树上莫队,熟悉序列莫队那套理论 ...
 - React  关于组件(界面)更新
			
在最近在学 React , 将组件的UI更新稍微整理了一下.根据业务要求,可能会出现如下的技术实现要求:1.更新自己2.更新子组件3.更新兄弟组件4.更新父组件5.父 call 子 function ...
 - WMI远程启动软件(某个应用程序)
			
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.M ...
 - Lucene——Field.Store(存储域选项)及Field.Index(索引选项)
			
Field.Store.YES或者NO(存储域选项) 设置为YES表示或把这个域中的内容完全存储到文件中,方便进行文本的还原 设置为NO表示把这个域的内容不存储到文件中,但是可以被索引,此时内容无法完 ...
 - 异常处理&RandomAccessFile&节奏感
			
异常处理 异常处理方面的知识,下面是学习中记的笔记: try尝试捕获异常 catch对捕获的异常进行处理 多个catch要注意的问题: 一.顺序问题,先小后大,也就是先子类后父类.因为当异常出现的时候 ...
 - Oracle中的列转行例子详解
			
数据如下:name id张三 1,2,3 要求实现:name id张三 1张三 2张三 3 --创建临时表 create table tmp as(select '张三' name, '1,2,3' ...
 - jspacker压缩及解压缩研究(js eval)
			
起因: 在研究爬虫的时候发现很多网站都出现了同一种方式的js混淆,并且名字都是pde.js,怀疑是使用了同一款混淆工具,所以研究一下. 这款工具叫JS Packer,并不是专门的混淆工具,而是一款js ...
 - 状态模式、职责链模式——省去if-else的繁琐结构
			
小时候写日记都是这么写的:上午七点起床,八点之前洗脸刷牙吃早饭,十二点之前好好上课,中午一点,吃午饭,下午两点到六点,上课,下课,找请假,明天妈妈要带我去姥姥家,九点之前,看动画片,九点钟,收拾去姥姥 ...
 
			
		