android之首页的风格,android自定义之 5.0 风格progressBar

private void startAnimation(){

if (animatorSet != null && animatorSet.isRunning()) {

animatorSet.cancel() ;  //   取消动画

}

animatorSet = new AnimatorSet() ;  //设置一个动画集合

AnimatorSet set = circuAnimator();  // 创建运行一圈动画的AnimatorSet

animatorSet.play(set) ;

animatorSet.addListener(new AnimatorListener() {

private boolean  isCancel = false ;

@Override

public void onAnimationStart(Animator animation) {

}

@Override

public void onAnimationRepeat(Animator animation) {

}

@Override

public void onAnimationEnd(Animator animation) {

if (!isCancel) {

startAnimation() ;  // 不停的去循环动画

}

}

@Override

public void onAnimationCancel(Animator animation) {

isCancel = true ;

}

}) ;

animatorSet.start() ;

}

//默认的动画时间

private  int DEFULT_DURATION = 660 ;

/**

* 循环的动画

*/

private AnimatorSet circuAnimator(){

//从小圈到大圈

ValueAnimator holdAnimator1 = ValueAnimator.ofFloat(incrementAngele + DEFULT_MIN_ANGLE , incrementAngele + 115f) ;

holdAnimator1.addUpdateListener(new AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator animation) {

incrementAngele = (float) animation.getAnimatedValue() ;

}

}) ;

holdAnimator1.setDuration(DEFULT_DURATION ) ;

holdAnimator1.setInterpolator(new LinearInterpolator()) ;

ValueAnimator expandAnimator = ValueAnimator.ofFloat(DEFULT_MIN_ANGLE , DEFULT_MAX_ANGLE) ;

expandAnimator.addUpdateListener(new AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator animation) {

sweepAngle = (float) animation.getAnimatedValue() ;

incrementAngele -= sweepAngle ;

invalidate() ;

}

}) ;

expandAnimator.setDuration(DEFULT_DURATION) ;

expandAnimator.setInterpolator(new DecelerateInterpolator(2)) ;

//从大圈到小圈

ValueAnimator holdAnimator = ValueAnimator.ofFloat(startAngle , startAngle + 115f) ;

holdAnimator.addUpdateListener(new AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator animation) {

startAngle =  (float) animation.getAnimatedValue() ;

}

});

holdAnimator.setDuration(DEFULT_DURATION ) ;

holdAnimator.setInterpolator(new LinearInterpolator()) ;

ValueAnimator narrowAnimator = ValueAnimator.ofFloat(DEFULT_MAX_ANGLE , DEFULT_MIN_ANGLE) ;

narrowAnimator.addUpdateListener(new AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator animation) {

sweepAngle = (float) animation.getAnimatedValue() ;

invalidate() ;

}

}) ;

narrowAnimator.setDuration(DEFULT_DURATION) ;

narrowAnimator.setInterpolator(new DecelerateInterpolator(2)) ;

AnimatorSet set = new AnimatorSet() ;

set.play(holdAnimator1 ).with(expandAnimator) ;

set.play(holdAnimator).with(narrowAnimator).after(holdAnimator1);

return set ;

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值