I won’t just survive,Oh, you will see me thrive.Can’t write my story,I’m beyond the archetype.
——我不会只是苟延残喘。你会见证我再次冉冉直指蓝天。你说我不能留下我的诗篇,我却在不停跨越桎梏和界限。
1. 概述
前述利用了XML来定义动画及插值器,但实际中更多是动态生成动画。这里介绍用代码动态生成动画及插值器
标签对应类:
- scale —— ScaleAnimation
- alpha —— AlphaAnimation
- rotate —— RotateAnimation
- translate —— TranslateAnimation
- set —— AnimationSet
2. Animation公共类
Animation类是所有动画(scale、alpha、translate、rotate)的基类,它所具有的标签及对应函数为:
XML属性 | 对应函数 | 说明 |
---|---|---|
android:duration | setDuration(long) | 动画持续时间,以毫秒为单位 |
android:fillAfter | setFillAfter(boolean) | 为true时,控件动画结束,保持动画最后时状态 |
android:fillBefore | setFillBefore(boolean) | 为true时,控件动画结束时,还原到开始动画前的状态 |
android:fillEnabled | setFillEnabled(boolean) | 与android:fillBefore 效果相同 |
android:repeatCount | setRepeatCount(int) | 重复次数 |
android:repeatMode | setRepeatMode(int) | 重复类型,有reverse和restart两个值,取值为RESTART或 REVERSE,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作 |
android:repeatMode | setInterpolator(Interpolator) | 设定插值器,其实就是指定的动作效果,比如弹跳效果等 |
3. ScaleAnimation
ScaleAnimation有以下几个构造函数:
ScaleAnimation(Context context, AttributeSet attrs) //从XML文件加载动画,基本用不到
ScaleAnimation(float fromX, float toX, float fromY, float toY)
ScaleAnimation(float fromX, float toX, float fromY, float toY, float pivotX, float pivotY)
ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
第一个构造函数是从本地XML文件加载动画
标签属性android:pivotX中有三种取值,数,百分数,百分数p;体现在构造函数中,就是最后一个构造函数的pivotXType,它的取值有三个:Animation.ABSOLUTE、Animation.RELATIVE_TO_SELF、Animation.RELATIVE_TO_PARENT
<?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"