2012-05-16 12 views
7

Come rendere il pulsante non selezionabile mentre translate.animate è in corso. Ho provato con lo button.setclickable(false) e lo button.setEnabled(false) entrambi hanno lavorato per me.Come impostare il pulsante non selezionabile durante l'animazione su Android?

Ecco il mio codice:

b2.setOnClickListener(new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
    if(i%2==0) 
    { 
     //b2.setClickable(false); 
     //   Toast toast1 = Toast.makeText(getBaseContext(), "Success", 1); 
     //   toast1.show(); 
     if(i==0) 
     { 
     //b2.setOnClickListener(null); 
     b2.setEnabled(false); 
     //b2.setClickable(false); 
     int modifierY; 
     modifierY=-70; 
     Animation translateAnimation=new TranslateAnimation(0, 0, 0, modifierY); 
     translateAnimation.setDuration(600); 
     translateAnimation.setFillEnabled(true); 
     MyAnimationListener listener=new MyAnimationListener(b2, modifierY,SimpleViewPagerforAndroidActivity.this); 
     translateAnimation.setAnimationListener(listener); 
     // b2.setOnClickListener(null); 
     Animation translateAnimation1=new TranslateAnimation(0, 0, 0,0); 
     translateAnimation1.setDuration(1000); 
     translateAnimation1.setFillEnabled(true); 
     MyAnimationListener listener1=new MyAnimationListener(main, 0,SimpleViewPagerforAndroidActivity.this); 
     translateAnimation1.setAnimationListener(listener1); 

     main.setVisibility(RelativeLayout.VISIBLE); 
     /* long time =AnimationUtils.currentAnimationTimeMillis(); 

     main.invalidate(); 
     b2.invalidate(); 

     translateAnimation.setStartTime(time); 
     translateAnimation1.setStartTime(time);*/ 
     main.startAnimation(translateAnimation1); 

     b2.startAnimation(translateAnimation); 
     i++; 
     // b2.setOnClickListener(this); 
     } 
     else 
     { 
     //b2.setOnClickListener(null); 
     b2.setEnabled(false); 
     //b2.setClickable(false); 
     int modifierY; 
     modifierY=-70; 
     Animation translateAnimation=new TranslateAnimation(0, 0, 0, modifierY); 
     translateAnimation.setDuration(1000); 
     translateAnimation.setFillEnabled(true); 
     MyAnimationListener listener=new MyAnimationListener(b2, modifierY,SimpleViewPagerforAndroidActivity.this); 
     translateAnimation.setAnimationListener(listener); 

     Animation translateAnimation1=new TranslateAnimation(0, 0, 0,-150); 
     translateAnimation1.setDuration(600); 
     translateAnimation1.setFillEnabled(true); 
     MyAnimationListener listener1=new MyAnimationListener(main, -150,SimpleViewPagerforAndroidActivity.this); 
     translateAnimation1.setAnimationListener(listener1); 

     main.setVisibility(RelativeLayout.VISIBLE); 
     /* long time =AnimationUtils.currentAnimationTimeMillis(); 

     main.invalidate(); 
     b2.invalidate(); 

     translateAnimation.setStartTime(time); 
     translateAnimation1.setStartTime(time);*/ 
     main.startAnimation(translateAnimation1); 

     b2.startAnimation(translateAnimation); 
     // b2.setOnClickListener(this); 
     i++; 
     } 
    } 
    else 
    { 
     //b2.setOnClickListener(null); 
     b2.setEnabled(false); 
     //b2.setClickable(false); 


     Animation translateAnimation=new TranslateAnimation(0, 0, 0,150); 
     translateAnimation.setDuration(1000); 
     translateAnimation.setFillEnabled(true); 
     MyAnimationListener listener=new MyAnimationListener(main, 150,SimpleViewPagerforAndroidActivity.this); 
     translateAnimation.setAnimationListener(listener); 
     Animation translateAnimation1=new TranslateAnimation(0, 0, 0,70); 
     translateAnimation1.setDuration(600); 
     translateAnimation1.setFillEnabled(true); 
     MyAnimationListener listener1=new MyAnimationListener(b2, 70,SimpleViewPagerforAndroidActivity.this); 
     translateAnimation1.setAnimationListener(listener1); 
     /* long time =AnimationUtils.currentAnimationTimeMillis(); 

     main.invalidate(); 
     b2.invalidate(); 

     translateAnimation.setStartTime(time); 
     translateAnimation1.setStartTime(time); 
     main.startAnimation(translateAnimation1); 

     b2.startAnimation(translateAnimation);*/ 
     b2.startAnimation(translateAnimation1); 
     main.startAnimation(translateAnimation); 
     i++; 
     //b2.setOnClickListener(this); 
    } 
    } 
}); 
+1

Si prega di inviare il frammento di codice – Rajesh

+0

utilizzare AsyncTask questo è ciò che è necessario quando è necessario fare un po 'di background mentre un'altra attività è in esecuzione, .... – SilentKiller

+0

Si è tentato di impostarlo nelle funzioni di richiamata dell'animazione. –

risposta

16

controllo approfondito sulla scatto del tasto se animazione è stata completata o meno, utilizzando hasEnd proprietà, controllare il codice qui sotto:

if (!(animation.hasEnded()) { 
    button.setClickable(false); 
} 
else{ 
button.setClickable(true); 
} 
0

Per prima cosa il tasto selezionabile. Allora quelle cose funzioneranno.

Button.setSelected (true);

2

Io uso button.setEnabled(false) per disabilitare evento Touch.

Problemi correlati