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通知界面无法显示。