Dialog、Toast、SnackBar给用户一个舒服的"提醒"

本文介绍了Android开发中三种常用的用户提示方式:Dialog、Toast和SnackBar。Dialog适用于需要用户明确响应的场景;Toast用于轻量级提示,不影响用户操作;SnackBar则介于两者之间,提供更灵活的交互方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Android开发中,用户在进行敏感操作的时候,我们经常会给用户一个友好的提示, 总结了下有这三个提示可以给用户。

1.Dialog

dialog提醒用户时,会暂时终止用户当前的行为,用户必须点击确定或者取消才能进行下一步的操作,带有强制性的提醒.

基本的用法我写在下面。

AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("标题")
                .setMessage("我是内容")
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog,
                                        int which) {
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog,
                                        int which) {
                    }
                })
                .show();


center

因为Android版本太多了,显示在各个手机上的样式都不太一样,所以大部分情况下我们用的都是自定义的dialog

2.Toast

Toast,也就是大家常说的”吐司”, 给用户一个友好提示,不带有强制性,不会强制用户终止当前的行为,用户可以继续进行下一步的行为.基本的写法

Toast.makeText(this, "我是吐司", Toast.LENGTH_SHORT).show();

在平常的开发中,我们为了防止用户多次点击会做一些判断,下面写一个我平常的写法,先判断是在主线程还是子线程,再判断用户有没有”手抖”多次点击,然后再进行吐司。

    /**
 * Toast的工具类
 *
 * @author zhangbing
 * @Description: (用一句话描述该类作用)
 * @CreateDate: 2017/12/20 14:05
 * @email 314835006@qq.com
 * @UpdateUser: zhangbing
 * @UpdateDate: 2017/12/20 14:05
 * @UpdateRemark:
 */
public class ToastUtils {


    private static Toast toast;

    /**
     * 防止用户连续点击的吐司
     *
     * @Params
     * @author zhangbing
     * @date 2017/12/20 14:06
     * @email 314835006@qq.com
     */
    public static void showToast(final Activity ctx, final String content) {

        if ("main".equals(Thread.currentThread().getName())) { //主线程

            if (toast == null) {
                toast = Toast.makeText(ctx, content, Toast.LENGTH_SHORT);

            } else {
                toast.setText(content);

            }

            toast.show();


        } else { //子线程

            ctx.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    if (toast == null) {
                        toast = Toast.makeText(ctx, content, Toast.LENGTH_SHORT);

                    } else {
                        toast.setText(content);

                    }

                    toast.show();
                }
            });
        }
    }
}


center

3.SnackBar

SnackBar介于二者之前,他会从指定布局的下面弹出,用户可以理会它,点击确认按钮会消失,也可以不理会他,一段时间后自己消失,基本写法如下:

 Snackbar.make(view, "我是内容", Snackbar.LENGTH_LONG)
                .setAction("确定", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {


                    }
                })
                .show();


center

参数中的view是指定的布局。

总结:

1.带有强制性的提醒用Dialog。
2.仅仅给个提醒,不影响用户的其他行为用Toast。
3.介于二者之前用SnackBar。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值