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(); } }); } } }
<?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>
<?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)