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

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的每一帧的图片。

这里面主要是有关于应用程序资源的总结学习,其中包含了动画资源。以后还有专门的有关动画的链接。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值