Advertisement

objectAnimator.addListener 自定义事件未触发

阅读量:

主要是记录一下android studio 属性动画学习的遇到的问题以及解决.

复制代码
           final ImageView image = findViewById(R.id.image);

    
             ObjectAnimator objectAnimator =  
    
            bjectAnimator.ofFloat(image,"alpha",0f,1f);
    
             //设置动画持续时间
    
             objectAnimator.setDuration(2000);
    
             objecAnimator.start();    
    
          //指定重写事件回调函数
    
             objectAnimator.addListener(new AnimatorListenerAdapter() {
    
                 @Override
    
                 public void onAnimationStart(Animator animation) {
    
                     super.onAnimationEnd(animation);
    
                     image.setRotation(90);
    
                 }
    
             });
    
         objectAnimator.addListener(new AnimatorListenerAdapter() {
    
         @Override
    
         public void onAnimationEnd(Animator animation) {
    
             super.onAnimationEnd(animation);
    
             image.setRotation(180);
    
         }
    
     });

主要问题出在为动画配置监听器的过程中

为了使图片在启动阶段的角度设置为90度

然后翻转180度。
在模拟器中实际运行时发现只有onAnimationEnd函数被调用而没有调用onAnimationStart
理论上认为重定义函数的位置不会影响其调用情况但我将代码进行了如下修改:

复制代码
  final ImageView image = findViewById(R.id.image);

    
             ObjectAnimator objectAnimator =  
    
            bjectAnimator.ofFloat(image,"alpha",0f,1f);
    
             //设置动画持续时间
    
             objectAnimator.setDuration(2000);
    
            
    
          //指定重写事件回调函数
    
             objectAnimator.addListener(new AnimatorListenerAdapter() {
    
                 @Override
    
                 public void onAnimationStart(Animator animation) {
    
                     super.onAnimationEnd(animation);
    
                     image.setRotation(90);
    
                 }
    
             });
    
         objectAnimator.addListener(new AnimatorListenerAdapter() {
    
         @Override
    
         public void onAnimationEnd(Animator animation) {
    
             super.onAnimationEnd(animation);
    
             image.setRotation(180);
    
         }
    
     });
    
  
    
  
    
      objecAnimator.start();    

也就是将start()方法放置在其下方,在该方法运行中该方法就会被调用;同时,在start()方法运行的过程中若该方法已被重新编写,则会触发相应的功能;此外,在决定调用哪个方法时也需考虑该方法是否已被修改过。

以上问题在我的Android Studio上出现,不知道其他人的是不是这样。

仅供参考。

全部评论 (0)

还没有任何评论哟~