Android 3-1 Toast

六月ゝ 毕业季﹏ 提交于 2020-02-28 03:39:18

Toast


Toast是一个视图,包括展示给用用户的的一条简洁、快速的信息。Toast类可以帮助你创建和显示这些内容。

当Toast展现的视图被显示给用户时,它是以悬浮的状态出现在应用上方的。它永远不会被捕获焦点。用户可能正在输入其他内容。 想法是尽可能不被打扰,同时仍向用户显示你希望他们看到的信息。例如:音量调整、你已经保存了某个设置的提示。

普通

最简单的使用Toast的方法是,你调用这个Toast的静态方法,它构造了你需要的一切参数并且返回一个Toast实例。

Toast.makeText(getApplicationContext(), "Default Toast.", Toast.LENGTH_LONG).show();

使用一个Toast中的常量规定消息显示的时长,LENGTH.LONG为3.5秒,LENGTH_SHORT为2秒

在这里插入图片描述

Toast的消息显示在屏幕中部靠下,如果想要弹出一个上下左右都居中的消息,可以这么做:
(1)使用Toast工具类创建一个Toast对象实例;
(2)使用setGravity方法设置通知应在屏幕上出现的位置。

Toast toast = Toast.makeText(getApplicationContext(), "Center Toast", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER,0,0);
toast.show();

在这里插入图片描述

自定义样式

我们在实际开发中有时会需要对弹出消息有更加丰富的样式,这就需要我们自定义一个Toast样式。
具体步骤如下:
(1)创建一个适用于Toast的自定义layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#99000000"
    android:gravity="center"
    >
    <LinearLayout
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:orientation="vertical"
        android:gravity="center"
        >
        <ImageView
            android:id="@+id/diy_toast_image"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:scaleType="fitCenter"
            />
        <TextView
            android:id="@+id/diy_toast_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="22sp"
            android:textColor="#ffffff"
            android:text="Some..."
            android:layout_marginTop="10dp"
            />
    </LinearLayout>
</LinearLayout>

在原始的父容器中嵌套一个子容器并规定大小,可以防止实际消息框变形

(2)新建Toast,创建视图并设置为Toast的主视图

Toast toastDiy = new Toast(getApplicationContext());
LayoutInflater inflater = LayoutInflater.from(ToastActivity.this);
View view = inflater.inflate(R.layout.layout_diy_toast, null);
//填充视图资源
ImageView imageView = view.findViewById(R.id.diy_toast_image);
TextView textView = view.findViewById(R.id.diy_toast_text);
imageView.setImageResource(R.drawable.like32);
textView.setText("Diy Toast");
toastDiy.setView(view);

(3)显示Toast

toastDiy.show();

在这里插入图片描述

优化显示效果

我们可以观察到,当用户在短期重复多次点击按钮出发Toast事件时,android将会将这些消息框排队进行显示,最终不利于用户体验,我们现在封装一个Toast工具类,通过封装方法避免重复创建Toast实例,以及缩短代码量。

public class ToastUtil {
	public static Toast mToast;

	/**
	 * 如果当前没有Toast,创建一个Toast,封装消息,如果有Toast存在,直接封装消息
	 * 最后输出提示信息
	 * @param context
	 * @param msg
	 */
	public static void showMsg(Context context, String msg) {
		if(mToast == null) {
			mToast = Toast.makeText(context, msg, Toast.LENGTH_LONG);

		} else {
			mToast.setText(msg);
		}
		mToast.show();
	}
}

调用ToastUtil工具类,显示提示信息:

ToastUtil.showMsg(getApplicationContext(), "Packed Toast");

原始Toast(点击3次)
在这里插入图片描述在这里插入图片描述

封装的Toast(点击3次)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!