Toast是一种提供给用户简洁信息的视图。Toast类帮助你创建和显示该信息。
该视图已浮于应用程序之上的形式呈现给用户。因为它并不获得焦点,即使用户正在输入什么也不会受到影响。它的目标是尽可能已不显眼的方式,使用户看到你提供的信息。有两个例子就是音量控制和设置信息保存成功。
使用该类最简单的方法就是调用一个静态方法,让他来构造你需要的一切并返回一个新的 Toast 对象。
1、我们首先来看看Toast常用 的默认效果:
2、我们还可以自定义位置:
3、带图片的:
4、完全实现我们自己的自定义效果:
5、可以由其它线程更新:
查看源代码:
HelloToastActivity.java
- package hb.android.hellotoast;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.view.Gravity;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- public class HelloToastActivity extends Activity {
- /** Called when the activity is first created. */
- Button btn_default;
- Button btn_define;
- Button btn_all_define;
- Button btn_image_define;
- Button btn_other_thread;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- initButton();
- btn_all_define.setOnClickListener(new MyOnClickListerer());
- btn_define.setOnClickListener(new MyOnClickListerer());
- btn_other_thread.setOnClickListener(new MyOnClickListerer());
- btn_image_define.setOnClickListener(new MyOnClickListerer());
- btn_default.setOnClickListener(new MyOnClickListerer());
- }
- public void initButton() {
- btn_all_define = (Button) findViewById(R.id.btn_all_define);
- btn_default = (Button) findViewById(R.id.btn_default);
- btn_define = (Button) findViewById(R.id.btn_define);
- btn_image_define = (Button) findViewById(R.id.btn_image_define);
- btn_other_thread = (Button) findViewById(R.id.btn_other_thread);
- }
- private class MyOnClickListerer implements OnClickListener {
- Handler handler = new Handler();
- @Override
- public void onClick(View v) {
- if (v == btn_default) {
- Toast.makeText(getApplicationContext(), "这 是默认效果",
- Toast.LENGTH_SHORT).show();
- } else if (v == btn_define) {
- Toast toast = Toast.makeText(getApplicationContext(),
- "这是自定义位置", Toast.LENGTH_SHORT);
- toast.setGravity(Gravity.CENTER, 0, 0);
- toast.show();
- } else if (v == btn_image_define) {
- Toast toast = Toast.makeText(getApplicationContext(), "这是带图片的",
- Toast.LENGTH_SHORT);
- LinearLayout toastView = (LinearLayout) toast.getView();
- ImageView imageCodeProject = new ImageView(
- getApplicationContext());
- imageCodeProject.setImageResource(R.drawable.ic_launcher);
- toastView.addView(imageCodeProject, 0);
- toast.show();
- } else if (v == btn_all_define) {
- LayoutInflater inflater = getLayoutInflater();
- View view = inflater.inflate(R.layout.custom, null);
- ImageView iv = (ImageView) view.findViewById(R.id.tvImageToast);
- iv.setImageResource(R.drawable.ic_launcher);
- TextView title = (TextView) view
- .findViewById(R.id.tvTitleToast);
- title.setText("Attention");
- TextView text = (TextView) view.findViewById(R.id.tvTextToast);
- text.setText("完全自定义Toast");
- Toast toast = new Toast(getApplicationContext());
- toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40);
- toast.setDuration(Toast.LENGTH_LONG);
- toast.setView(view);
- toast.show();
- } else if (v == btn_other_thread) {
- new Thread(new Runnable() {
- public void run() {
- System.out.println("d");
- showToast();
- }
- }).start();
- }
- }
- public void showToast() {
- handler.post(new Runnable() {
- @Override
- public void run() {
- Toast.makeText(getApplicationContext(), "我来自其他线程!",
- Toast.LENGTH_SHORT).show();
- }
- });
- }
- }
- }
custom.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/llToast"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="#ffffffff"
- android:orientation="vertical" >
- <TextView
- android:id="@+id/tvTitleToast"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_margin="1dip"
- android:background="#bb000000"
- android:gravity="center"
- android:textColor="#ffffffff" />
- <LinearLayout
- android:id="@+id/llToastContent"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="1dip"
- android:layout_marginLeft="1dip"
- android:layout_marginRight="1dip"
- android:background="#44000000"
- android:orientation="vertical"
- android:padding="15dip" >
- <ImageView
- android:id="@+id/tvImageToast"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center" />
- <TextView
- android:id="@+id/tvTextToast"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:paddingLeft="10dip"
- android:paddingRight="10dip"
- android:textColor="#ff000000" />
- </LinearLayout>
- </LinearLayout>
main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- android:gravity="center_horizontal">
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="建立属于你自己的Toast" />
- <Button
- android:id="@+id/btn_default"
- android:text="默认"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"/>
- <Button
- android:id="@+id/btn_define"
- android:text="自定义位置"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"/>
- <Button
- android:id="@+id/btn_image_define"
- android:text="带图片"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"/>
- <Button
- android:id="@+id/btn_all_define"
- android:text="完全自定义效果"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"/>
- <Button
- android:id="@+id/btn_other_thread"
- android:text="来自其它纯种"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"/>
- </LinearLayout>
源码下载:Android Toast用法详解(各种自定义Toast)
ref:http://blog.youkuaiyun.com/huangbiao86/article/details/6965669