2017-01-09 2 views
0

Я сделал кнопку для Android, которая вращается по клику, но когда я устанавливаю кнопку и новую активность, когда я нажимаю, она просто устанавливает меня в новую активность.андроид кнопка анимация. Как получить анимацию сначала, щелкнув перед действием

Мне нужно только это: когда я нажимаю на эту кнопку, сначала сделайте анимацию, например. поверните, затем выполните новое действие. Вот мой код:

ImageButton pandaButton2 = (ImageButton) findViewById(R.id.pandaButton2); 

    pandaButton2.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      v.startAnimation(pandarotate); 
      startActivity(new Intent("com.example.threepandas.MENU")); 
} 
}); 
+0

Начало работы: нет. –

ответ

0

Вы можете установить animation listener, когда закончить animation начать activity. Пожалуйста, обратитесь this link

Пример кода (необходимо обновить на основе вашей цели):

ImageButton pandaButton2 = (ImageButton) findViewById(R.id.pandaButton2); 

    pandaButton2.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      v.startAnimation(pandarotate); 
} 
}); 
pandarotate.setAnimationListener(new Animation.AnimationListener() { 
      @Override 
      public void onAnimationStart(Animation animation) { 

      } 

      @Override 
      public void onAnimationEnd(Animation animation) { 
       startActivity(new Intent("com.example.threepandas.MENU")); 
      } 

      @Override 
      public void onAnimationRepeat(Animation animation) { 

      } 
     }); 
0

вставить задержку длины анимации после начала анимации и до того, как активность начинает

try { 
    Thread.sleep(1000);     //1000 milliseconds is one second. 
} catch(InterruptedException ex) { 
    Thread.currentThread().interrupt(); 
} 
+0

Does 'Thread.sleep' блокирует UIThread и блокирует пользовательский интерфейс, делая приложение замороженным для пользователя? –

0

Вот решение, которое я использую для этой проблемы (получено из исходного кода приложения ввода-вывода Google на Github)

private static final int DELAY = 250; 
private Handler mHandler; 

@Override 
     public void onClick(final View view) { 
      switch (view.getId()) { 
       case R.id.button: 
        mHandler.postDelayed(new Runnable() { 
         @Override 
         public void run() { 

         } 
        }, DELAY); 
        break; 
      } 
     } 
Смежные вопросы