Android开发UI之Toast的使用
Toast,A toast provides simple feedback about an operation in a small popup.
对于操作提供一个简单反馈信息。
官网链接:http://developer.android.com/reference/android/widget/Toast.html
常量有两个:
LENGTH_LONG 显示稍微长点的时间,大概在5秒左右
LENGTH_SHORT 显示稍微短点的时候,大概在3秒左右
比较简单的使用
代码:
1 Toast.makeText(getApplicationContext(), "This is a Toast", Toast.LENGTH_SHORT).show();
还可以定制Toast显示的位置
1 Toast showToast=Toast.makeText(MainActivity.this, "显示Toast", Toast.LENGTH_SHORT); 2 showToast.setGravity(Gravity.CENTER, 0, 0); 3 showToast.show();
通过setGravity (int gravity, int xOffset, int yOffset)方法,
参数一:gravity,可以使用Gravity类的常量,比如:Gravity.CENTER,Gravity.BOTTOM,Gravity.LEFT,Gravity.RIGHT,Gravity.TOP等
参数二:toast位于屏幕X轴的位移,大于0表示往屏幕右边移动,小于0表示往屏幕左边移动。
参数三:与参数二一样, 不过是在屏幕Y轴的位移,大于0表示往屏幕下方移动,小于0表示往屏幕上方移动。
同时还可以给Toast设置图片等,
需要用的setView (View view)方法
参数:设置一个view,可以是layout,也可以是imageview等,只要是view或者子类都可以,看需求定义即可。
使用Toast时,注意,在UI线程中,可以直接使用Toast。在子线程中,直接使用Toast的话,会出现Force Close,需要使用Looper类。请参考这篇记录
Toast的五种例子
1.默认效果
1 Toast.makeText(getApplicationContext(), "默认Toast样式",Toast.LENGTH_SHORT).show();
2.自定义显示位置效果
1 toast = Toast.makeText(getApplicationContext(), "自定义位置Toast", Toast.LENGTH_LONG); 2 toast.setGravity(Gravity.CENTER, 0, 0); 3 toast.show();
3.带图片效果
1 toast = Toast.makeText(getApplicationContext(),"带图片的Toast",Toast.LENGTH_LONG); 2 toast.setGravity(Gravity.CENTER, 0, 0); 3 LinearLayout toastView = (LinearLayout) toast.getView(); 4 ImageView imageCodeProject = new ImageView(getApplicationContext()); 5 imageCodeProject.setImageResource(R.drawable.icon); 6 toastView.addView(imageCodeProject, 0); 7 toast.show();
4.完全自定义效果
1 LayoutInflater inflater = getLayoutInflater(); 2 View layout = inflater.inflate(R.layout.custom,(ViewGroup) findViewById(R.id.llToast)); 4 ImageView image = (ImageView) layout.findViewById(R.id.tvImageToast); 5 image.setImageResource(R.drawable.icon); 6 TextView title = (TextView) layout.findViewById(R.id.tvTitleToast); 7 title.setText("Attention"); 8 TextView text = (TextView) layout.findViewById(R.id.tvTextToast); 9 text.setText("完全自定义Toast"); 10 toast = new Toast(getApplicationContext()); 11 toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40); 12 toast.setDuration(Toast.LENGTH_LONG); 13 toast.setView(layout); 14 toast.show();
5.来自其他线程的
1 new Thread(new Runnable() { 2 public void run() { 3 showToast(); 4 } 5 }).start();
直面挑战,躬身入局