J'ai besoin de créer une fonction similaire à Toast.makeText (...) mais plus rapide à disparaître. J'ai vu une telle boîte de message dans le logiciel "Le monde fr" lorsque vous sélectionnez un bouton de la barre d'outils. Son apparaître et disparaître très rapidement si vous passez à une autre icône. Je cherche à faire la même chose mais je ne sais pas comment faire. Messagebox ne devrait pas être modal, ce que je veux est une sorte d'info-bulle rapide. L'info-bulle devrait apparaître et disparaître rapidement. des idées ?Comment créer une boîte de message de suppression automatique rapide sous ANDROID?
Répondre
Créer un objet Toast:
final Toast toast = Toast.makeText(this, "message", Toast.LENGTH_SHORT);
Créer un objet Timer:
Timer timer = new Timer();
Créer une tâche qui annule l'objet Toast
:
TimerTask task = new TimerTask() {
@Override
public void run() {
// make sure to cancel the Toast in UI thread
runOnUiThread(new Runnable() {
@Override
public void run() {
toast.cancel();
}
});
}
};
Exécutez l'annuler tâche après spécifié période de temps
timer.schedule(task, 100);
Merci beaucoup, je peux essayer de voir ça. – Fabien
L'info-bulle peut être effectuée via PopupWindows. Je suppose que vous avez une grille d'icônes et que vous voulez fournir des astuces qui disparaissent en fonction de l'heure ou en cliquant sur une autre icône - corrigez-moi si je me trompe:
Créer une mPopupWindow globale et la rejeter avant de gonfler une nouvelle un à chaque fois. Vous pouvez utiliser des threads qui le rejettent pour vous en fonction de l'heure ou du code défini dans votre écouteur de défilement.
PopupWindow mPopupWindow = null;
mIconButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mPopupWindow != null) {
mPopupWindow.dismiss();
mPopupWindow = null;
}
TextView tv = new TextView(getApplicationContext());
tv.setText(tooltipText);
tv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon,
0, 0, 0);
mPopupWindow = new PopupWindow(tv);
mPopupWindow.setWindowLayoutMode(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
mPopupWindow.showAsDropDown(v);
// write threads to disable it based on time as well
}
});
Très interessant, je ne savais pas à ce sujet ! – Fabien
Avez-vous essayé de modifier la durée des notifications Toast?
Toast.makeText(context, "My message", Toast.LENGTH_SHORT).show();
Je me méfie d'avoir une notification apparaître et disparaître plus vite que tout ce que la courte durée est optimisé pour le temps minimum un utilisateur prend pour voir et lire le pain grillé.
J'ai essayé, mais j'ai fait la barre d'outils à partir du widget galerie. Et je voulais quand vous faites défiler sur la barre d'outils pour afficher une infobulle très courte. La durée standard du toast LENGTH_SHORT est trop longue. Lorsque vous faites défiler rapidement jusqu'à la dernière image/bouton, vous pouvez toujours voir l'ancien texte de toast de l'image précédente sur la barre d'outils, car ils prennent beaucoup de temps à disparaître. – Fabien
vous pouvez le faire de cette façon. créer un toast personnalisé avec un textview (R.id.text). utilise une classe qui s'étend de la classe CountDownTimer pour contrôler la durée d'affichage du toast. par exemple: MyCount counter = new MyCount (5000,1000);
affichera le toast pendant 5 secondes. abaissez les valeurs pour obtenir les résultats souhaités.
LayoutInflater inflater = getLayoutInflater();
Afficher la présentation = inflater.inflate (R.layout.toastxml, (ViewGroup) findViewById (R.id.toast_layout_root)); toast = nouveau Toast (this); toast.setView (disposition);
TextView text = (TextView) layout.findViewById (R.id.text); Text.setText ("Bonjour, ceci est un toast personnalisé!");
Compteur MyCount = new MyCount (5000,1000); compteur.début();
classe mycount étend CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
toast.cancel();
}
@Override
public void onTick(long millisUntilFinished) {
toast.show();
}
}
aussi intéressant! – Fabien
Cela pourrait vous aider: http://groups.google.com/group/android-developers/browse_thread/thread/edf69019754e565b – Pentium10