Dans mon application, j'ai une activité qui s'ouvre en plus de l'activité en cours lorsque j'appuie sur le bouton de menu. Dans cette superposition, je souhaite que mes vues s'affichent lorsque l'activité apparaît et disparaissent à nouveau avant qu'elle ne se ferme. Voici mon code:Animer la vue avant la fermeture Activité
public class OverlayActivity extends Activity {
TextView t;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.overlay);
t = (TextView) findViewById(R.id.view_overlay_text);
t.setAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in));
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean r = false;
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
finishOverlay();
r = true;
break;
default:
r = super.onKeyDown(keyCode, event);
break;
}
return r;
}
private void finishOverlay() {
Animation a = AnimationUtils.loadAnimation(this, R.anim.fade_out);
a.setAnimationListener(fadeOutComplete);
t.setText("TEST"); // <--- if i add this line the code suddenly works
t.setAnimation(a);
}
Animation.AnimationListener fadeOutComplete=new Animation.AnimationListener() {
public void onAnimationEnd(Animation animation) {
finish();
}
public void onAnimationRepeat(Animation animation) {
// not needed
}
public void onAnimationStart(Animation animation) {
// not needed
}
};
}
D'une certaine façon le fadeOut-Animation ne fonctionne que si je fais quelque chose comme t.setText ("someText"). Si je laisse cette ligne, elle ne s'anime pas et le AnimationListener n'est donc pas déclenché.
MISE À JOUR: Quelques informations font clearify le problème: onCreate: TextView se fane et je peux le voir sur l'écran onKeyDown « BACK »: finishOverlay est appelé. (elle le fait réellement) finishOverlay: L'animation n'est pas appliquée à la vue que je veux fondre. Pourquoi? C'est la même référence. Serait-ce un problème de portée?
c'est vrai. Je n'ai pas besoin de définir la visibilité. C'est là par erreur mais je ne change pas le problème. le textview n'est pas vide. J'ai essayé la même chose avec une imageview. ne marche pas non plus. donc ce n'est pas spécial à un textview. – notme
Je suppose que je commencerais à regarder pourquoi vous essayez d'attraper le bouton de retour sur votre chemin. En général, j'ai vu des gens utiliser onDestroy() pour les activités. – user432209