Android Toast用法详解(各种自定义Toast)

Toast是一种提供给用户简洁信息的视图。Toast类帮助你创建和显示该信息。

该视图已浮于应用程序之上的形式呈现给用户。因为它并不获得焦点,即使用户正在输入什么也不会受到影响。它的目标是尽可能已不显眼的方式,使用户看到你提供的信息。有两个例子就是音量控制和设置信息保存成功。

使用该类最简单的方法就是调用一个静态方法,让他来构造你需要的一切并返回一个新的 Toast 对象。

1、我们首先来看看Toast常用 的默认效果:

Android Toast用法详解(各种自定义Toast)_第1张图片

2、我们还可以自定义位置:

Android Toast用法详解(各种自定义Toast)_第2张图片

3、带图片的:

Android Toast用法详解(各种自定义Toast)_第3张图片

4、完全实现我们自己的自定义效果:

Android Toast用法详解(各种自定义Toast)_第4张图片

5、可以由其它线程更新:

Android Toast用法详解(各种自定义Toast)_第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)

你可能感兴趣的:(thread,android,image,layout,button,encoding)