Android动画机制(整理中)

1.属性动画:

1.属性动画分两种:ObjectAnimator、ValueAnimator;
2.ObjectAnimator继承至ValueAnimator;
3.ObjectAnimator是通过定义字符串的方式设置属性,底层是根据字符串反射获得的方法。
示例:

ObjectAnimator

	//1.获取ObjectAnimator 实例  通过类提供的静态方法 参1:目标(谁执行动画) //参数2:属性名
    ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "rotation",0,90,180,360);
    //2.设置动画执行时长
    oa.setDuration(2000);
    //3.启动动画
    oa.start();

ValueAnimator

  	valueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);//这个可以设置多个值
    valueAnimator.setDuration(5000);//变化时间
    
    //设置动画变化监听
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
        
            float val = (float) animation.getAnimatedValue();
			//在5000ms内val值会从0.0f变到1.0f,所以可以通过这个数控制动画的渐变过程
            pbCalm.setProgress((int) (before[0] + (after[0] - before[0]) * val));
            
        }
    });
    
    //设置动画各个时段的监听,做一些数据的初始化和归位
    valueAnimator.addListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationStart(Animator animation) {
        }
        @Override
        public void onAnimationEnd(Animator animation) {
        }
        @Override
        public void onAnimationCancel(Animator animation) {
        }
        @Override
        public void onAnimationRepeat(Animator animation) {
        }
    });
属性动画的属性:
	anim.setDuration(500);
    // 时长
    
    anim.setStartDelay(500);
    // 延迟

    anim.setRepeatCount(0);
    // 重复:播放次数 = 重放次数+1
    // 动画播放次数 = infinite时,动画无限重复
    
    anim.setRepeatMode(ValueAnimator.RESTART);
    // 设置重复播放动画模式
    // ValueAnimator.RESTART(默认):正序重放
    // ValueAnimator.REVERSE:倒序回放

2.补间动画
补间动画一般是用xml文件实现

你可能感兴趣的:(技术篇)