2016-03-13 3 views
2

Je fais une application où un ImageButton est affiché et disparaît jusqu'à ce qu'il disparaisse si l'utilisateur ne le touche pas trop longtemps.
J'ai essayé beaucoup de différentes solutions (animation, wait(), etc.) mais rien n'a fait ce que j'ai essayé de ...
Il devrait fonctionner comme Toast, juste apparaître pendant 3 secondes, puis disparaître (à la fin de la . traiter la visibilité devrait être GONEandroid - montre un bouton pour un temps limité

Répondre

1

Utiliser un timer et alpha

long duration = 5000 // 5 seconds 
long tick = 100 // 0.1 seconds; 

new CountDownTimer(duration, tick) { 

    public void onTick(long millisUntilFinished) { 
     mImageButton.setAlpha(millisUntilFinished/(float)duration) 
    } 

    public void onFinish() { 
     mImageButton.setVisibility(View.GONE); 
     mImageButton.setAlpha(1); // incase you want to show the button again 
    } 
}.start(); 

setAlpha() - Définit l'opacité de la vue. C'est une valeur de 0 à 1, où 0 signifie que la vue est complètement transparente et 1 signifie que la vue est complètement opaque.

+0

Le ' ImageButton' ne montre que pendant 0,1 seconde puis disparaît et ne réapparaît jamais (même si je le relance avec 'setVisibility (View.VISIBLE)' ... – Dotan

+0

Désolé @Dotan ajusté réponse –

+0

Merci, fonctionne parfaitement (: – Dotan

0

vous pouvez utiliser l'objet Toast, définissez son point de vue par l'apparence du bouton Pour référence, vous pouvez voir. http://techblogon.com/custom-toast-android-example-with-source-code-description/ et http://www.javatpoint.com/android-custom-toast-example vous pouvez également étendre Toast.java et dans la constructeur public peut définir la vue

+0

Je voudrais qu'il soit cliquable et arrondi ... est-ce possible avec un toast? – Dotan

+0

oui. Lorsque vous définissezView, vous pouvez définir l'image d'arrière-plan (comme vous voulez, coins arrondis) et dans la vue, vous pouvez définir tactile et cliquez sur auditeurs ... –

+0

Pas tout à fait ce que je cherchais ...
@Joe Maher's réponse a bien fait ...
merci de toute façon (: – Dotan

0

Peut-être quelque chose comme ceci:

yourImageButton.animate() 
    .alpha(0) 
    .setStartDelay(3000) 
    .setDuration(1000) 
    .setListener(new Animator.AnimatorListener() { 


     @Override 
     public void onAnimationStart(Animator animation) { 

     } 

     @Override 
     public void onAnimationEnd(Animator animation) { 
      yourImageButton.setVisibility(View.GONE); 
     } 

     @Override 
     public void onAnimationCancel(Animator animation) { 

     } 

     @Override 
     public void onAnimationRepeat(Animator animation) { 

     } 
    }); 

Il utilise ViewPropertyAnimator et se fanent le bouton après 3000ms. Dans le cas où l'animation se termine, sur AnimationEnd() sera appelée et définira la visibilité à Gone. Dans votre onClickMethod, vous pouvez éventuellement annuler() l'animation; Gardez à l'esprit que si vous définissez Visibilité sur GONE, vous ne pouvez pas simplement revenir à l'état VISIBLE, vous devez à nouveau instancier ImageButton. Meilleure utilisation:

.setVisibilty(View.INVISIBLE);