Android冒险之旅-2-Toast的使用与优化

本文介绍Android系统中的Toast组件,探讨其默认行为及优化方案。通过代码示例展示如何避免重复显示Toast,提高用户体验。同时,文章还介绍了自定义Toast布局和位置的方法。

介绍

Toas是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间之后自动消失,并且不会占用任何屏幕空间。

效果图:

在这里插入图片描述

Tips: 可以看到系统默认Toast采用的是队列的方式, 等当前Toast消失后, 下一个Toast才能显示出来;如果多次点击,会浪费时间排着队重复显示,我们可以优化一下默认的Toast,优化代码下面给出。

直接上代码,说明写在代码注释里

 public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.btn1:
                /*
                 *使用默认Toast
                 * 点击几次就会一个接一个的按顺序出现
                 * 等队列中的Toast处理完,显示Toast的任务才算结束。
                 */
                Toast.makeText(this, "默认Toast", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn2:
                /*
                *使用优化后的Toast
                *只创建一个Toast
                */
                ToastUtils.showToast(this,"优化后的Toast");
                break;
            case R.id.btn3:
                /*
                * 自定义Toast
                * 自定义布局
                * 自定义位置
                */
                //布局解析器解析自定义布局
                View toastView = LayoutInflater.from(this).inflate(R.layout.toast_layout01,null);
               // ImageView imageView = toastView.findViewById(R.id.picture);
                //创建Toast实列
                Toast toast = new Toast(this);
                //Toast加载布局toastView
                toast.setView(toastView);
                //设置位置居中,xy偏移量为0
                toast.setGravity(Gravity.CENTER,0,0);
                //设置显示时长
                toast.setDuration(Toast.LENGTH_SHORT);
                //显示Toast
                toast.show();
                break;
        }
    }

优化的Toast代码

/**
 * create by 星航指挥官
 * create on 2020/8/24
 * 我为天帝 当镇压世间一切敌
 * 遮天
 */
public class ToastUtils {

    private static Toast toast;

    /**
     * 解决Toast点多少就提示多少次的问题
     */
    public static void showToast(Context context, String content) {

        if (Build.VERSION.SDK_INT == Build.VERSION_CODES.P) {
            /*
            * 如果是Android 9 那么使用原生的Toast 因为这个版本官方自己优化了Toast
            * 然而Android 10 又把优化取消了  T-T !
            * */
            Toast.makeText(context, content, Toast.LENGTH_SHORT).show();
        } else {
            if (toast == null) {
                toast = Toast.makeText(context, content, Toast.LENGTH_SHORT);
            } else {
                toast.setText(content);
            }
            toast.show();
        }
    }

}

kee

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值