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 GONE
android - montre un bouton pour un temps limité
Répondre
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.
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
Je voudrais qu'il soit cliquable et arrondi ... est-ce possible avec un toast? – Dotan
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 ... –
Pas tout à fait ce que je cherchais ...
@Joe Maher's réponse a bien fait ...
merci de toute façon (: –
Dotan
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);
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
Désolé @Dotan ajusté réponse –
Merci, fonctionne parfaitement (: – Dotan