Android中的动画


    
帧动画Frame Animation  (AnimationDrawable)
        帧动画很简单,就是不同的图片切换形成动画效果
     补间动画,友称View动画(Tween Animation )
        设置动画常用的API
      •  setDuration()设置动画时长
      •  setRepeatCount()设置播放次数
      •  setRepeatMode()设置模式
            •      Animation.RESTART重新开始
            •      Animation.INFINITE无限循环
            •      Animation.REVERSE原路返回
      •  setFillAfter()指示动画完成后的控件的状态是否停留在动画停止的时候的状态
      •  setAnimationListener()设置动画监听
      •  setStartOffset()设置动画开始等待的时间
      •  startAnimation()开始动画
        补间动画又分为4中
      •  透明    AlphaAnimation        在XML文件中        alph
      •  旋转    RotateAnimation        在XML文件中         rotate
      •  缩放    ScaleAnimation        在XML文件中         scale
      •  平移    TranslateAnimation        在XML文件中      translate
        还有一个动画集合AnimationSet把多个动画一起执行,例如执行平移又执行缩放

    XML中定义动画
            在res下新建一个anim文件夹动画的xml文件都放在该文件夹下
                    要定义上动画就把动画名称作为跟标签,例如 透明动画跟标签使用alph
                          <? xml version= "1.0"  encoding= "utf-8" ?>
                                     <alpha  xmlns: android = "http://schemas.android.com/apk/res/android"
                       android :fromAlpha= "1.0" 
                       android :toAlpha= "0.0" >
                                   </alpha>
        AnimationUtils.loadAnimation()加载一个xml的动画
   

//透明度动画的参数,透明度的取值0.0到1.0之间
AlphaAnimation alpha = new AlphaAnimation(1.0f, 0.0f);
alpha.setDuration(2000);
//动画执行次数
alpha.setRepeatCount(3);
//执行动画前的等待时间
alpha.setStartOffset(1000);
//动画模式
alpha.setRepeatMode(Animation.REVERSE);
//开始动画
mIv.startAnimation(alpha);
//动画监听
alpha.setAnimationListener(new Animation.AnimationListener() {
    //开始动画调用
    @Override
    public void onAnimationStart(Animation animation) {
        Log.d(TAG, "onAnimationStart: 动画开始了");
    }
    //结束动画调用
    @Override
    public void onAnimationEnd(Animation animation) {
        Log.d(TAG, "onAnimationStart: 动画结束了");
    }
    //动画执行一次,就会调用一次,不是动画结束
    @Override
    public void onAnimationRepeat(Animation animation) {
        Log.d(TAG, "onAnimationRepeat: -------------");
    }
});

          //view动画的最大缺点是,在移动了view的时候只是改变的view的显示位置,并没有用改变View的属性
            //例如一个按钮,在移动了之后他的点击事件还在按钮的初始位置,而按钮的显示位置已经移动了,
            //显示位置上并没有点击事件,点击之后没有效果.按钮的点击事件还是在原来的位置上   
     属性动画property Animation    
//属性动画的核心类 ValueAnimation,属性动画的机制是不断的对属性值操作实现的
//ObjectAnimator是继承自ValueAnimation
//参数1动画作用的对象, 这里使用的是ImageView
//参数2要改变view的属性,指定要改变view的那个属性,然而TextView并没有alpha属性,ObjectAnimator是怎样操作的呢?
        //ObjectAnimator内部的机制不是直接找alpha属性,而是找该属性对应的get和set方法,因此alpha对应的
        //get和set方法是public void setAlpha(float value);  public float getAlpha();
// 参数3.4,alpha属性的取值范围
ObjectAnimator ani = ObjectAnimator.ofFloat(mIv,"alpha",1.0f,0.0f);
ani.setDuration(2000);
ani.setRepeatCount(2);
ani.start();

组合动画(AnimatorSet)
        实现组合动画主要借助AnimationSet类,这个类提供了一个play(),如果我们想该方法中传入一个动画对象(ValueAnimator和ObjectAnimator)
        将返回一个 AnimatorSet. Builder的实例,AnimatorSet. Builder中有四个方法
          • after(long delay)   将现有动画延迟指定毫秒后执行
          • after(long delay)   将现有动画延迟指定毫秒后执行
          • before(Animator anim)   将现有动画插入到传入的动画之前执行
          • with(Animator anim)   将现有动画和传入的动画同时执行  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值