android中关于动画的理解和使用

在android开发过程中为了使用户的交互和体验更流畅和自然,动画已经是应用开发中不可缺少的部分,在Android中动画分类比较多,最早的帧动画,补间动画,3.0后添加了属性动画 5.0又增加了vectorDrawable能够满足用户的各种需求

1、帧动画

帧动画就是frame动画是一系列图片按照一定顺序逐个展示的过程,可以通过xml定义也可以通过代码实现,animation-list定义的动画将顺次从上往下执行



    
    
    
    
    
    


定义完成之后需要将动画设置给View,例如设置为imageview的背景


此时动画并不会在imageview显示时启动,我们还需要通过代码启动该动画

((AnimationDrawable)imageview.getBackground()).start();

2、补间动画

补间动画就是tween动画,是操作控件让其进行旋转、鉴别、移动、缩放的一种过程,同样可以通过xml形式或者是代码实现,主要是分为AlphaAnimation、ScaleAnimation、TranslateAnimation、RotateAnimation、AnimationSet

  
  
      
  
      
  
      
  
      

  

fromXScale/fromYScale:沿着X轴/Y轴缩放的起始比例
toXScale/toYScale:沿着X轴/Y轴缩放的结束比例
pivotX/pivotY:缩放的中轴点X/Y坐标,即距离自身左边缘的位置,比如50%就是以图像的 中心为中轴点
fromAlpha :起始透明度
toAlpha:结束透明度
透明度的范围为:0-1,完全透明-完全不透明
fromXDelta/fromYDelta:动画起始位置的X/Y坐标
toXDelta/toYDelta:动画结束位置的X/Y坐标
fromDegrees/toDegrees:旋转的起始/结束角度
repeatCount:旋转的次数,默认值为0,代表一次,假如是其他值,比如3,则旋转4次 另外,值为-1或者infinite时,表示动画永不停止
repeatMode:设置重复模式,默认restart,但只有当repeatCount大于0或者infinite或-1时 才有效。还可以设置成reverse,表示偶数次显示动画时会做方向相反的运动!
使用方法也比较简单

Animation animation = AnimationUtils.loadAnimation(this,
                        R.anim.anim_);
view.startAnimation(animation);

3、属性动画

属性动画不再是针对view设计 也不限定为上面几种简单的动画操作,实际上是一种在一定时间段内不断修改某个对象的属性值的机制
属性动画的核心类ValueAnimator。一半都是通过ofFloat、ofInt等静态工厂函数构建ValueAnimator。例如将数值从0.0到1.0过渡的动画

private void startValueAnimation(){
        ValueAnimator animator = ValueAnimator.ofFloat(0.0f,1.0f);
        animator.setDuration(1000);
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                Log.e("","属性值:"+animation.getAnimatedValue())
            }
        });
        animator.start();
    }

对任意对象执行指定属性值进行修改使用ValueAnimator的实现类ObjectAnimator

ObjectAnimator objectAnimator = ObjectAnimator.ofObject(mView,"Alpha",0.0f,1.0f);
        objectAnimator.setDuration(1000);
        objectAnimator.start();

4、VectorDrawable

VectorDrawable目的就是用来渲染矢量图,AnimatedVectorDrawable用来播放矢量动画

你可能感兴趣的:(android中关于动画的理解和使用)