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 指动画结束时画面停留在此动画的第一帧; 默认值为trueandroid:fillAfter 指动画结束是画面停留在此动画的最后一帧。默认值为falseandroid:fillEnabled解释:
1,FillEnable = false 时,FillBefore 和FillAfter的值将被忽略,此时FillEnable=Flase时和FillBefore = true且FillAfter=true,且FillEnabled=true等价,也就是开始结束都会被fill坑爹。。。,一般写成false2,FillEnable = true时,FillBefore = true,FillAfter = false;只在第一帧fill3,FillEnable = true时,FillBefore = false,FillAfter=true;只在最后一帧fill4,FillEnable = true时,FillBefore = false,FillAfter=falsestartOffset 设置启动时间--><alphaandroid:duration="3000"android:fromAlpha="0.1"android:toAlpha="1.0"android:fillBefore="true"android:fillAfter="true"android:fillEnabled="true"/>
<!--尺寸伸缩动画效果 scaleinterpolator 指定一个动画的插入器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 ,该动画转化在动画结束后被应用--><scaleandroid: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" />
<!--位置转移动画效果 translatefromXDelta 属性为动画起始时 X坐标上的位置toXDelta 属性为动画结束时 X坐标上的位置fromYDelta 属性为动画起始时 Y坐标上的位置toYDelta 属性为动画结束时 Y坐标上的位置注意:没有指定fromXType toXType fromYType toYType 时候,默认是以自己为相对参照物duration 属性为动画持续时间(时间以毫秒为单位)--><translateandroid:fromXScale="0.0"android:fromYScale="0.0"android:toXScale="0.8"android:toYScale="0.6"android:duration="3000"/>
<!--旋转动画效果 rotateinterpolator 指定一个动画的插入器有三种动画插入器: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 属性为动画持续时间(时间以毫秒为单位)--><rotateandroid: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的每一帧的图片。
这里面主要是有关于应用程序资源的总结学习,其中包含了动画资源。以后还有专门的有关动画的链接。