View anim
主要有四种:缩放,平移,渐变,旋转
文件位置:res/anim/filename.xml
资源引用:
Java:R.anim.filename
XMl:@[package:]anim/filename
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@[package:]anim/interpolator_resource" android:shareInterpolator=["true" | "false"] > <alpha android:fromAlpha="float" android:toAlpha="float" /> <scale android:fromXScale="float" android:toXScale="float" android:fromYScale="float" android:toYScale="float" android:pivotX="float" android:pivotY="float" /> <translate android:fromXDelta="float" android:toXDelta="float" android:fromYDelta="float" android:toYDelta="float" /> <rotate android:fromDegrees="float" android:toDegrees="float" android:pivotX="float" android:pivotY="float" /> <set> ... </set> </set> |
布局文件必须有一个独立的根元素
可以使,alpa,translate,rotate,scale 或者set,set是几种效果的集合,也可以内嵌set元素
属性
android:interpolator(插值器)
用于修改一个动画过程中的速率,可以定义各种各样的非线性变化函数,比如加速、减速等。
在Android中所有的插值器都是Interpolator 的子类,通过 android:interpolator 属性你可以引用不同的插值器。下面是几种插值器:
你可以通过下面的方式使用它们
1 2 3 | <set android:interpolator="@android:anim/accelerate_interpolator"> ... </set> |
android:shareInterpolator
Boolean值, true:代表在所有的子元素中共享同一个插值器
android:startOffset
动画开始的偏移时间。如果没有设置,所有动画同时进行
A fade-in or fade-out animation. Represents an AlphaAnimation.
一个渐入渐出的动画,对应的java类为AlphaAnimation。
属性
android:fromAlpha
android:toAlpha
代表动画开始和结束时透明度,0.0表示完全透明,1.0表示完全不透明,Float值
可以实现动态调控件尺寸的效果,通过设置pivotX和pivotY你可以指定image缩放的中心点,比如:如果这些值是0,则表示左上角,所有的缩放变化将沿着右下角的轨迹运动。对应的类为:ScaleAnimation
属性:
android:fromXScale
android:toXScale
android:fromYScale
android:toYScale
Float值,为动画起始到结束时,X、Y坐标上的伸缩尺寸
0.0表示收缩到没有
1.0表示正常无伸缩
android:pivotX
android:pivotY
代表缩放的中轴点X/Y坐标,浮点值
如果我们想表示中轴点为图像的中心,我们可以把两个属性值定义成0.5或者50%。
代表一个水平、垂直的位移。对应的类为TranslateAnimation.
属性
android:fromXDelta 属性代表起始X方向的位置
android:toXDelta
android:fromYDelta
android:toYDelta
代表动画起始或者结束X / Y方向上的位置,Float或者百分比值
浮点数num%、num%p分别相对于自身或者父控件
如果以浮点数字表示,是一个绝对值,代表相对自身原始位置的像素值;
如果以num%表示,代表相对于自己的百分比,比如toXDelta定义为100%就表示在X方向上移动自己的1倍距离
如果以num%p表示,代表相对于父类组件的百分比。
是旋转动画,与之对应的Java类是RotateAnimation。
属性
android:fromDegrees
android:toDegrees
代表起始和结束的角度,浮点值,单位:度
android:pivotX 属性代表旋转中心的X坐标值
android:pivotY 属性代表旋转中心的Y坐标值
Float值或者百分比
这两个属性也有三种表示方式,但是X轴都是相对方向都是Left,Y轴都是相对于Top
浮点数、num%、num%p;
数字方式代表相对于自身左边缘的像素值,
num%方式代表相对于自身左边缘或顶边缘的百分比,
num%p方式代表相对于父容器的左边缘或顶边缘的百分比。
属性:
android:fromDegrees
android:toDegrees
开始和结束时的弧度位置,单位是度,Float值
调用代码
1 2 3 | ImageView image = (ImageView) findViewById(R.id.image); Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump); image.startAnimation(hyperspaceJump); |
另外,在动画中,如果我们添加了android:fillAfter=”true”后,这个动画执行完之后保持最后的状态;android:duration=”integer”代表动画持续的时间,单位为毫秒。
附上调试的简单动画从原有位置向左下角移动,然后移动到右边,在回到原始位置
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <set android:duration="1000"> <translate android:fromXDelta="0%" android:toXDelta="-100%" /> <translate android:fromYDelta="0%" android:toYDelta="100%" /> </set> <set android:duration="1000" android:startOffset="1000"> <translate android:fromXDelta="0%" android:toXDelta="200%" /> </set> <set android:duration="1000" android:startOffset="2000"> <translate android:fromXDelta="0%" android:toXDelta="-100%" /> <translate android:fromYDelta="0%" android:toYDelta="-100%" /> </set> </set>
简单的渐变效果,从透明变化到不透明
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator"> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="1000" /> </set>基于中心点旋转。repeatCount = -1 表示循环旋转,可以通过clearAnimation();停止动画
repeatMode 标示重复方式,restart 和reverse 一个表示重新开始,一个是反着来。只有在repeatCount 大于1或者-1 生效
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:repeatMode="restart"> <rotate android:fromDegrees="0" android:toDegrees="360" android:repeatCount="-1" android:duration="1000" android:zAdjustment="top" android:pivotY="50%" android:pivotX="50%"/> </set>
参考文章:http://www.lightskystreet.com/2014/12/03/view-and-property-anim-knowldege-and-compare/