现在使用这种动画的越来越少了,大部分都是使用了属性动画了,但是作为学习还是有用的,主要是这个动画有一个致命的缺点就是不能交互,现在分别介绍下这四种动画作用
alpha:渐变透明度动画效果
scale:渐变尺寸伸缩动画效果
translate:平移动画
rotate:旋转动画
在res下创建一个anim文件夹,这里是存放我们平时创建的xml动画,如图:
它的访问方式和访问在drawable存放的图片类似,R.anim.alpha即可!
1)alpha 透明度动画
首先看下alpha.xml中属性有哪些
android:fromAlpha=""
android:toAlpha=""
android:interpolator=""
android:fillEnabled=""
android:fillBefore=""
android:fillAfter=""
android:duration=""
android:startOffset=""
android:repeatCount=""
android:repeatMode=""
android:zAdjustment=""
>
其中
android:fromAlpha="" android:toAlpha=""
这二个属性是alpha动画特有的,其他的都是和其他动画一样都有得,首先把这些共有的动画属性讲解下:
android:duration动画持续时间,以毫秒为单位
android:fillAfter如果设置为true,控件动画结束时,将保持动画最后时的状态(指的是view的状态)
android:fillBefore如果设置为true,控件动画结束时,还原到开始动画前的状态(指的是view的状态)
android:fillEnabled与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态
android:repeatCount重复次数
android:repeatMode重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。
android:interpolator设定插值器,后面会专门讲
现在讲下alpha的特有属性
android:fromAlpha="" //动画开始的透明度,从0.0 --1.0 ,0.0表示全透明(看不见),1.0表示完全不透明 android:toAlpha="" //动画结束时的透明度,也是从0.0 --1.0 ,0.0表示全透明,1.0表示完全不透明
如果是0.0到1.0就是从看不见到慢慢眼睛能看见的过程,
代码使用如下:
Animation alphaAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha);//通过android提供的AnimationUtils动画工具类加载xml动画
iv.startAnimation(alphaAnimation);//动画作用于view上,
2):rotate旋转动画 rotate特有的四个动画属性
android:fromDegrees=""
android:toDegrees=""
android:pivotX=""
android:pivotY=""
>
android:fromDegrees开始旋转的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数
android:toDegrees结束时旋转到的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数
android:pivotX缩放起点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 30、30%、30%p
android:pivotY缩放起点Y轴坐标,同上
说明:
如果pivotx是数值,比如30表示的是在当前View的左上角,即原点处加上50px
如果pivotx是30%表示在当前控件的左上角加上自己宽度的50%
如果pivotx是30%p表示的是的左上角加上父控件宽度的30%做为起始点x轴坐标
下面画图演示刚才几个值
如果还不知道围绕这个点旋转是怎么样的话,就想象把这个点当做一个圆心 然后用圆规画一个就知道是什么效果了,
如果是50%的话,就表示在view宽度*50%就是宽度的一般 如图:
如果是50%p的话 如图:
3):scale缩放动画
先看下scale.xml文件中关于缩放动画几个关键的属性
android:fromXScale=""
android:toXScale=""
android:fromYScale=""
android:toYScale=""
android:pivotX=""
android:pivotY=""
android:duration="5000"
>
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,同上面讲解一样
android:pivotY缩放起点Y轴坐标,同上
4)translate平移动画
translate.xml
android:fromXDelta=""
android:toXDelta=""
android:fromYDelta=""
android:toYDelta=""
>
平移动画关键四个属性
android:fromXDelta起始点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,同上
android:fromYDelta起始点Y轴从标,可以是数值、百分数、百分数p 三种样式;
android:toXDelta结束点X轴坐标
android:toYDelta结束点Y轴坐标
来个demo玩玩:
android:fromXDelta="0"
android:toXDelta="0"
android:fromYDelta="100%p"
android:toYDelta="-100%p"
android:duration="500"
android:fillAfter="true"
android:repeatCount="10"
android:repeatMode="restart"
>
从底部平移穿过上面屏幕 类似发火箭的功能,
5):set是几个动画的集合放在一起
比如这样
android:duration="3000"
android:fillAfter="true">
android:fromDegrees="0"
android:toDegrees="720"
android:pivotX="50%"
android:pivotY="50%"/>
android:fromAlpha="0.0"
android:toAlpha="1.0"/>
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"/>
没有什么特别的动画属性,就是累加放在一起,看起来是几个动画一起执行,达到一定效果,ok,到此为止!