您的位置:首页 > 移动开发 > Android开发

Android应用程序资源——Animation动画资源

2016-03-04 18:07 316 查看
Android动画分为两种:属性动画和查看动画
这里主要讲查看动画。
查看动画分为:逐帧(Frame)动画和补间(Tween)动画
AnimationDrawable类是可绘制动画的基础。

一、逐帧动画 FrameAnimation(又叫可绘制动画)

逐帧动画: 它要求开发者把动画过程的每张静态图片都收集起来,然后由Android来控制依次显示这些静态图片,然后利用人眼“视觉暂留”的原理,给用户造成动画的效果,就像看电影一样。

使用:存在于res/drawable/xxx.xml目录中(若没有drawable目录,就创建一个drawable文件夹)
1,用xml文件创建动画

创建时使用根元素<animation-list.../>,再使用<item.../>子元素定义动画的全部帧,并制定各帧的持续时间即可。
例如本应用程序的:anim_frame_useing.xml
<animation-list.../>中的属性:
android:oneshot="false" 动画是否只运行一次,true运行一次然后停止在最后一帧;false重复运行
android:visible="true" Drawable对象的初始能见度状态,true可见,false不可见(默认为false)
android:variablePadding="true" boolean型,默认为false,当设置为true时,则drawable的padding值随当前选择的状态而改变。
<item.../>中的属性:

android:drawable参数是每帧图片

android:duration是每帧的时间长度(单位为毫秒)
2,直接用代码写帧动画:

利用AnimationDrawable对象,每次调用addFrame(Drawable frame,int duration)向该动画添加帧,每调用一次,就往<animation-list../>中添加一个<item.../>子元素。

二、补间动画

就是指开发者只需指定动画开始、动画结束“关键帧”,而动画变化的“中间帧”由系统计算、并补齐。
补间动画又分为四大类:
移动补间动画,
缩放补间动画,
旋转补间动画,
透明补间动画。

Android使用Animation代表抽象的动画类,它包括以下子类:

AlphaAnimation:透明度改变的动画。创建时要指定动画开始时、结束时的透明度和动画持续时间,透明度变化值(0-1)
ScaleAnimation:大小缩放的动画。创建时要指定动画开始时缩放比、动画结束时缩放比,并指定动画持续时间。缩放时可以以不同中心点来(通过pivoteX、pivotY来指定“缩放中心的坐标”)
TranslateAnimation:位移变化的动画。创建时指定动画开始时为止(通过x、y坐标)、结束时位置(通过x、y坐标),并指定动画持续时间。
RotateAnimation:旋转动画。创建时指定动画开始时的旋转角度、结束时旋转角度,并指定动画持续时间,还可以通过pivotX、pivotY来指定旋转中心的坐标。

Interpolator负责控制动画的变化速度,使得(Alpha、Scale、Translate、Rotate)能以匀速、加速、减速、抛物线速度等各种速度变化。
它是一个接口,android为它提供了如下几个实现类,分别用于实现不同动画变化速度。

LinearInterpolator 动画以匀速改变
AccelerateInterpolator 在动画开始的地方速度较慢,然后开始加速
AccelerateDecelerateInterpolator 在动画开始、结束的地方改变速度较慢,在中间的时候加速。
CycleInterpolator 动画循环播放特定的次数,变化速度按正弦曲线改变

DecelerateInterpolator 在动画开始的地方改变速度较快,然后开始减速

使用:存在于res/anim/xxx.xml目录中(若没有anim目录,就创建一个anim文件夹)
创建时使用根元素<set.../>、<alpha.../>、<scale.../>、<translate.../>或<rotate.../>,再使用其中的各种属性来绘画动画
例如本应用程序的:tween_alpha_useing.xml、tween_rotate_useing.xml、tween_scale_useing.xml、tween_set_useing.xml、tween_translate_useing.xml

<!--
透明度控制动画效果 alpha
浮点型值:
fromAlpha 属性为动画起始时透明度
toAlpha 属性为动画结束时透明度(0.0表示完全透明,1.0表示完全不透明)
以上值取0.10-1.0之间的float数据类型的数字
长整型值:
duration 属性为动画持续时间(时间以毫秒为单位)
android:fillBefore 指动画结束时画面停留在此动画的第一帧; 默认值为true
android:fillAfter 指动画结束是画面停留在此动画的最后一帧。默认值为false
android:fillEnabled
解释:

1,FillEnable = false 时,FillBefore 和FillAfter的值将被忽略,此时FillEnable=Flase时和FillBefore = true且FillAfter=true,
且FillEnabled=true等价,也就是开始结束都会被fill坑爹。。。,一般写成false
2,FillEnable = true时,FillBefore = true,FillAfter = false;只在第一帧fill
3,FillEnable = true时,FillBefore = false,FillAfter=true;只在最后一帧fill
4,FillEnable = true时,FillBefore = false,FillAfter=false
startOffset 设置启动时间
-->
<alpha
android:duration="3000"
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:fillBefore="true"
android:fillAfter="true"
android:fillEnabled="true"/>

<!--
尺寸伸缩动画效果 scale
interpolator 指定一个动画的插入器
accelerate_decelerate_interpolator 加速-减速 动画插入器
accelerate_interpolator 加速-动画插入器
decelerate_interpolator 减速- 动画插入器
其他的属于特定的动画效果

fromXScale 属性为动画起始时 X坐标上的伸缩尺寸
toXScale 属性为动画结束时 X坐标上的伸缩尺寸
fromYScale 属性为动画起始时Y坐标上的伸缩尺寸
toYScale 属性为动画结束时Y坐标上的伸缩尺寸
浮点值:0.0表示收缩到没有 ; 1.0表示正常无伸缩 ; 值小于1.0表示收缩 ; 值大于1.0表示放大
pivotX 属性为动画相对于物件的X坐标的开始位置
pivotY 属性为动画相对于物件的Y坐标的开始位置
值:以上两个属性值 从0%-100%中取值 ; 50%为物件的X或Y方向坐标上的中点位置
duration 属性为动画持续时间(同上)
fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
-->
<scale
android:duration="3000"
android:fillAfter="true"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:interpolator="@android:anim/decelerate_interpolator"
android:pivotX="20%"
android:pivotY="30%"
android:toXScale="0.8"
android:toYScale="0.6" />

<!--
位置转移动画效果 translate
fromXDelta 属性为动画起始时 X坐标上的位置
toXDelta 属性为动画结束时 X坐标上的位置
fromYDelta 属性为动画起始时 Y坐标上的位置
toYDelta 属性为动画结束时 Y坐标上的位置
注意:
没有指定fromXType toXType fromYType toYType 时候,
默认是以自己为相对参照物
duration 属性为动画持续时间(时间以毫秒为单位)
-->
<translate
android:fromXScale="0.0"
android:fromYScale="0.0"
android:toXScale="0.8"
android:toYScale="0.6"
android:duration="3000"/>

<!--
旋转动画效果 rotate
interpolator 指定一个动画的插入器
有三种动画插入器:
accelerate_decelerate_interpolator 加速-减速 动画插入器
accelerate_interpolator 加速-动画插入器
decelerate_interpolator 减速- 动画插入器
其他的属于特定的动画效果

fromDegrees 属性为动画起始时物件的角度
toDegrees 属性为动画结束时物件旋转的角度 可以大于360度
浮点数:
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)

pivotX 属性为动画相对于物件的X坐标的开始位置
pivotY 属性为动画相对于物件的Y坐标的开始位置
值:以上两个属性值 从0%-100%中取值 ; 50%为物件的X或Y方向坐标上的中点位置
duration 属性为动画持续时间(时间以毫秒为单位)
-->
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0.0"
android:toDegrees="120"
android:pivotX="20%"
android:pivotY="30%"
android:duration="3000"
/>

自定义补间动画:

GIF动画播放:

要想播放GIF图片,首先需要对GIF进行解码,然后将GIF中的每一帧分别提取出来保存到一个容器种,然后根据需要绘制每一帧,这样就可以轻松实现GIF动画的播放。

创建解码类;

GIF帧管理器来管理GIF的每一帧的图片;

最后使用这两个类来播放一张GIF的每一帧的图片。

简单总结使用代码下载地址:https://git.oschina.net/22889/Android_ApplicationResource_Animation.git
这里面主要是有关于应用程序资源的总结学习,其中包含了动画资源。以后还有专门的有关动画的链接。
android官网动画使用:http://developer.android.com/guide/topics/resources/animation-resource.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: