Android Toast 显示时间问题的探讨

我想,看到这篇文章的你对Toast并不陌生,可以这样说,Toast的作用就是提示用户。一般为了到达更好地用户体验效果,我们可以自定义Toast的显示效果,包括样式、显示时间等。这里我只对Toast的显示时间问题与大家分享一下我的经验。

我们知道Toast的默认显示时间有两个,分别为Toast.LENGTH_SHORT和Toast.LENGTH_LONG,当然我们也可以根据需要自定义Toast显示时间的长短,这个问题不是本文的重点,在这里不做介绍。下面开始我们的重点。使用过Toast的你,也许与我一样也遇到过这样的问题:我们在几个Button的点击事件中都添加Toast提醒消息,当逐个点击这些Button后,Toast消息会叠加出现,持续一个相对长的时间,并且当我们关闭此应用时,Toast消息还在显示。出现这种情况是因为每次Toast提示的时间叠加的结果,比如,第一个Toast出现的时间为1s,那么第二个就要等待1s后才能出现,这样就会造成时间的累加,致使显示时间增加。显然我们在做应用时并不希望出现此种情况,那么这里给出我的用过的一个方法。如果我们的应用使用Toast频繁,建议对此单独建个类以使代码不至于那么冗杂,我们用起来也方便。

ToastShow.class:

public class ToastShow {
 private Context context;
 private Toast toast = null;
 public ToastShow(Context context) {
  this.context = context;
 }
 public void toastShow(String text) {
  if(toast == null)
  {
   toast = Toast.makeText(context, text, Toast.LENGTH_SHORT);
  }
  else {
   toast.setText(text);
  }
  toast.show();
 }
}

使用这段代码用于显示Toast就不会出现时间地叠加,下面分析一下。个人认为只是一个Toast在不停的显示,只是其内容(也就是出现的提示消息)不同,当Toast=null时,出现一个Toast,如果这个Toast还没有消失时就要出现第二个,那么只是使用其setText()方法改变了内容,文档对setText()方法地解释是:

Update the text in a Toast that was previously created using one of the makeText() methods.

也就是:更新之前创建的一个使用makeText()方法的Toast里的文本。看到这也许你就明白了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/447a825b76d5a97ecc45a19a2d1ca8fb.html