成都网站建设设计

将想法与焦点和您一起共享

Android动画Animator开发问题-创新互联

在开发Android的Animator时遇到如下问题:

站在用户的角度思考问题,与客户深入沟通,找到高碑店网站设计与高碑店网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、国际域名空间、雅安服务器托管、企业邮箱。业务覆盖高碑店地区。

1. 关于Animator的循环播放:

     在Animator动画中有循环的设置方法setRepeatCount(ValueAnimator.INFINITE) , 而对于AnimatorSet需要实现循环播放,实现方法如下代码:

private AtomicBoolean isStart = new AtomicBoolean(false);

animatorSet.addListener(new Animator.AnimatorListener() {    
  @Override    
  public void onAnimationStart(Animator animation) {
  
  }
      
  @Override    
  public void onAnimationEnd(Animator animation) {        
      if (isStart.get()) {            
         animation.start();
      }
  }
      
  @Override    
  public void onAnimationCancel(Animator animation) {
  
  }
  
  @Override    
  public void onAnimationRepeat(Animator animation) {
      
  }
});
animatorSet.start();

public void stopRecognizerViewAnim() {
    isStart.set(false);
}

2 . 关于View的缩放:

 对于View的缩放一般使用scale。如果缩放的是GroupView,则内部的组件也随着缩放。如果不希望缩放内部的view,而仅仅是宽度或高度的缩放, 实现方法如下代码:

mAnimatorSet = new AnimatorSet();
ValueAnimator height = ValueAnimator.ofObject(new WidthEvaluator(), mCurrWidth, mPreWidth);
height.setDuration(DURATION);
mAnimatorSet.playTogether(height);
mAnimatorSet.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) {
    }
});
mAnimatorSet.start();

private class WidthEvaluator extends IntEvaluator {
    @Override
    public Integer evaluate(float fraction, Integer startValue, Integer endValue) {
        int value = super.evaluate(fraction, startValue, endValue);
        ViewGroup.LayoutParams layoutParams = getLayoutParams();
        layoutParams.width = value;
        setLayoutParams(layoutParams);
        return value;
    }
}

3. 如果同一个AnimatorSet中多个Animator需要设置before() 或者after() ,不能再同一个AnimatorSet中设置多个before() 或者after()。例如: play(AAnimator).before(BAnimator).before(CAnimator).. 是错误的。 这个是我个人的理解,如果不正确,请留言告知。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:Android动画Animator开发问题-创新互联
链接分享:http://chengdu.cdxwcx.cn/article/dphdpi.html