13.4.2 Toast的使用

使用弹出式通知Toast,需要使用Android的android.widght.Toast类,通过静态函数Toast.makeText可以将带有给定文字信息的Toast呈现在用户面前:


//构造Toast对象,显示文字信息是R.string.my_tip,提示时长

Toast toast=Toast.makeText(getApplicationContext(),

R.string.my_tip, Toast.LENGTH_LONG);

//可以修改文本展示的效果,比如将文本设置成左上角显示等

toast.setGravity(Gravity.TOP|Gravity.LEFT,0,0);

//最后,显示Toast

toast.show();


其中Toast.LENGTH_LONG表示Toast通知显示时长,在显示了该时长后,Toast通知会自动销毁。Toast.LENGTH_LONG表示长时间显示(在Android系统中,该默认值为3.5秒),Toast.LENGTH_SHORT表示短时间显示(Android的系统默认值为2秒)。

默认的Toast仅提供简单的文本显示,在绝大部分情况下,它能够符合开发者的需求,并且可以保持一致的显示效果。当然,Android也提供了界面定制的接口,供开发者使用:


//构造自定义的交互界面

LayoutInflater inflater=getLayoutInflater();

View layout=inflater.inflate(R.layout.toast_layout);

ImageView image=(ImageView)

layout.findViewById(R.id.image);

image.setImageResource(R.drawable.toast);

TextView text=(TextView)layout.findViewById(R.id.text);

text.setText("有图的Toast通知!");

//设置并显示Toast通知

Toast toast=new Toast(getApplicationContext());

toast.setGravity(Gravity.CENTER_VERTICAL,0,0);

toast.setDuration(Toast.LENGTH_LONG);

toast.setView(layout);

toast.show();


调用Toast.show函数后,Toast通知被提交到了通知服务中,当通知服务需要显示该Toast通知时,会回调Toast的调用者,在构造时所处的进程和消息循环中构造并呈现该Toast通知的交互界面。在实际开发中,需要特别理解这一点,在构造并发出Toast通知时,所在的消息循环,必须是在主线程的消息循环中,否则,会导致Toast通知界面无法显示。