https://developer.android.com/guide/topics/resources/animation-resource
View Animation https://developer.android.com/guide/topics/graphics/view-animation#tween-animation
前言
View animation
视图动画框架支持补间动画和逐帧动画,他们都可以用XML声明。
一、Tween animation 补间动画
以XML格式定义的动画,用于执行图形上的旋转、淡入淡出、移动和拉伸等过渡。
1.文件位置
res/anim/filename.xml中,文件名将用作资源ID。
2.编译资源数据类型
资源对应的是Animation类。
3.资源使用
在Java中:R.anim.filename
在XML中:@ [package:] anim / filename
4.语法
syntax.PNG该文件必须具有单个根元素:<alpha>,<scale>,<translate>,<rotate>或<set>元素,其中包含一组(或多组)其他动画元素(甚至嵌套元件)。
5.元素
<set>
-
解释:
容纳其他动画元素(<alpha>,<scale>,<translate>,<rotate>)或其他<set>元素的容器。 表示一个AnimationSet。 -
属性:
1)android:interpolator 插值资源。 用于动画的插值器。 该值必须是对指定内插器(不是内插器类名)的资源的引用。 平台提供默认插值器资源,您也可以创建自己的插补器资源。
2)android:shareInterpolator 。布尔。 如果要在所有子元素中共享相同的插值器,则为“true”。
<alpha>
- 解释:
淡入淡出动画。表示AlphaAnimation。 - 属性:
1)android:fromAlpha
Float。 启动不透明度偏移,其中0.0是透明的,1.0是不透明的。
2)android:toAlpha
Float。 结束不透明度偏移,其中0.0是透明的,1.0是不透明的。
有关<alpha>支持的更多属性,请参阅Animation类引用(其中所有XML属性都由此元素继承)。
<scale>
- 解释:
调整大小的动画。 您可以通过指定pivotX和pivotY指定图像的中心点,使其向外(或向内)增长。 例如,如果这些值为0,0(左上角),则所有增长都将向下和向右。 表示ScaleAnimation。 - 属性:
1)android:fromXScale
Float。开始X大小偏移,其中1.0没有变化。
2)android:toXScale
Float。结束X大小偏移,其中1.0没有变化。
3)android:fromYScale
Float。开始Y尺寸偏移,其中1.0没有变化。
4)android:toYScale
Float。结束Y尺寸偏移,其中1.0没有变化。
5)android:pivotX
Float。缩放对象时X坐标保持固定。
6)android:pivotY
Float。缩放对象时Y坐标保持固定。
有关<scale>支持的更多属性,请参阅Animation类引用(其中,所有XML属性都由此元素继承)。
<translate>
- 解释:
垂直和/或水平运动。 支持以下三种格式中的以下任何属性:-100到100以“%”结尾的值,表示相对于自身的百分比; 以“%p”结尾的-100到100之间的值,表示相对于其父级的百分比; 没有后缀的浮点值,表示绝对值。 表示TranslateAnimation。 - 属性:
1)android:fromXDelta
浮动或百分比。 开始X偏移。 表示:相对于正常位置的像素(例如“5”),相对于元素宽度的百分比(例如“5%”),或相对于父宽度的百分比(例如“5%p”))。
2)android:toXDelta
浮动或百分比。 结束X偏移。 表示:相对于正常位置的像素(例如“5”),相对于元素宽度的百分比(例如“5%”),或相对于父宽度的百分比(例如“5%p”))。
3)android:fromYDelta
浮动或百分比。 开始Y偏移。 表示:相对于正常位置的像素(例如“5”),相对于元素高度的百分比(例如“5%”),或相对于父高度的百分比(例如“5%p”))。
4)android:toYDelta
浮动或百分比。 结束Y偏移。 表示:相对于正常位置的像素(例如“5”),相对于元素高度的百分比(例如“5%”),或相对于父高度的百分比(例如“5%p”))。
有关<translate>支持的更多属性,请参阅Animation类引用(其中,所有XML属性都由此元素继承)。
<rotate>
- 解释:
旋转动画。 表示RotateAnimation。 - 属性:
1)android:fromDegrees
浮动。 起始角度位置,以度为单位。
2)android:toDegrees
浮动。 结束角度位置,以度为单位。
3)android:pivotX
浮动或百分比。 旋转中心的X坐标。 表示:相对于对象左边缘的像素(例如“5”),相对于对象左边缘的百分比(例如“5%”),或相对于父容器左边缘的百分比(例如“5%p“)。
4)android:pivotY
浮动或百分比。 旋转中心的Y坐标。 表示:相对于对象的上边缘的像素(例如“5”),相对于对象的上边缘的百分比(例如“5%”),或相对于父容器的上边缘的百分比(例如“5%p“)。
有关<rotate>支持的更多属性,请参阅Animation类引用(其中,所有XML属性都由此元素继承)。
6.例子
XML file saved at res/anim/hyperspace_jump.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="700"
android:fillAfter="false"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="0.6"
android:pivotX="50%"
android:pivotY="50%" />
<set
android:interpolator="@android:anim/accelerate_interpolator"
android:startOffset="700">
<scale
android:duration="400"
android:fromXScale="1.4"
android:fromYScale="0.6"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.0"
android:toYScale="0.0" />
<rotate
android:duration="400"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="-45"
android:toYScale="0.0" />
</set>
</set>
此应用程序代码将动画应用于ImageView并启动动画:
ImageView image = (ImageView) findViewById(R.id.image);
Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
image.startAnimation(hyperspaceJump);
7.插值器
插值器是以XML定义的动画修饰符,它影响动画中的变化率。 这允许您现有的动画效果加速,减速,重复,反弹等。
内插器应用于具有android:interpolator属性的动画元素,其值是对内插器资源的引用。
Android中可用的所有插值器都是Interpolator类的子类。 对于每个插值器类,Android包含一个公共资源,您可以参考该公共资源,以便使用android:interpolator属性将插值器应用于动画。 下表指定了每个插补器使用的资源:
Interpolator class Resource ID
AccelerateDecelerateInterpolator @android:anim/accelerate_decelerate_interpolator
AccelerateInterpolator @android:anim/accelerate_interpolator
AnticipateInterpolator @android:anim/anticipate_interpolator
AnticipateOvershootInterpolator @android:anim/anticipate_overshoot_interpolator
BounceInterpolator @android:anim/bounce_interpolator
CycleInterpolator @android:anim/cycle_interpolator
DecelerateInterpolator @android:anim/decelerate_interpolator
LinearInterpolator @android:anim/linear_interpolator
OvershootInterpolator @android:anim/overshoot_interpolator
以下是如何使用android:interpolator属性应用其中一个:
<set android:interpolator="@android:anim/accelerate_interpolator">
...
</set>
8.自定义插值器
如果您对平台提供的插补器(在上表中列出)不满意,则可以创建具有已修改属性的自定义插补器资源。 例如,您可以调整AnticipateInterpolator的加速率,或调整CycleInterpolator的周期数。 为此,您需要在XML文件中创建自己的插补器资源。
网友评论