2016-08-30 3 views
0

У меня есть кнопка, которую я оживляю при касании. анимация работает, но после того, как анимация является complelete, я вызываю setAnimation (null), чтобы сбросить кнопку, но кнопка не возвращается к своей позиции по умолчанию.Кнопка исчезает после анимации

вот код:

ok_btn_id.setOnTouchListener(new OnSwipeTouchListener(BarCodeReaderActivity.this) { 
      public void onSwipeTop() { 
      } 
      public void onSwipeRight() { 

       slidefromLeftToRight(ok_btn_id); 
      } 
      public void onSwipeLeft() { 
       slidefromRightToLeft(ok_btn_id); 
      } 
      public void onSwipeBottom() { 
      } 
     }); 

public void slidefromRightToLeft(final View view) 
    { 
     TranslateAnimation animate; 

     DisplayMetrics metrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(metrics); 

     if (view.getHeight() == 0) { 
      animate = new TranslateAnimation(metrics.widthPixels/2, 
        0, 0, 0); 
     } else { 
      animate = new TranslateAnimation(0,-viewGroup.getWidth(), 0, 0); // View for animation 
     } 

     animate.setDuration(500); 
     animate.setFillAfter(false); 

     view.startAnimation(animate); 
     view.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       view.setAnimation(null); 
       view.setVisibility(View.VISIBLE); 
      } 
     }, 500); 
    } 

ответ

1

Пожалуйста, попробуйте следующее:

animation.setAnimationListener(new Animation.AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation animation) { 
      aView.setVisibility(View.VISIBLE); 
     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 

      button.clearAnimation(); 

     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 
    }); 

Надеется, что это поможет.

+0

Абсолютно! Никогда не думал, что это необходимо. – xdevs23

0

Если вы хотите сбросить позицию попробовать Animation.reset();

animate.setAnimationListener(new AnimationListener() { 
    @Override 
    public void onAnimationEnd(Animation animation) 
    { 
     animation.reset(); 
    } 
} 
Смежные вопросы