【Toast消息】

Android-自定义Toast

前言

笔者小白,初次写博客,有诸多不足之处,欢迎各位读者指正。
由于参加亚太机器人大赛Robocon2022——同创辉煌,我在参赛团队里负责的是上位机部分,本次上位机我们团队放弃了传统的手柄,改用了手机app做上位机交互控制。前些天大致学了些Java(也真的就只学了些,很多看不完,也看不懂,深感自身编程能力不足)。现在开始学习Android开发,在Android Studio平台学习app开发。

Toast

1.什么是Toast?
我也具体答不上来,只知道在Android开发中,大致和消息提示有关,为此我还查了一下该单词英文含义,如下图(好像没有一个和消息相关的。。。)
在这里插入图片描述
2.Toast的使用案例
大致看了一些资料,基本是这么使用的(如下代码)。
第一个参数是上下文(我现在还不知道上下文的含义,但基本看到都是MainActivity.this或getApplicationContext()),并且参考了于连林老师的《爱上Android》,书上说最好用getApplicationContext(),原因:如果在Toast消失之前,Toast持有了当前Activity,而此时如果点击返回键,会导致Activity无法被GC销毁,这个Activity就引起了内存泄露。
第二个参数是想显示的String对象,也就是字符串,这里我传入 “我要学好Android”
第三个参数是传入int类型,一般传入的是Toast.LENGTH_SHORT或Toast.LENGTH_LONG,分别代表不同的显示时长(显示时长一到,消息提示就消失了)

Toast toast = Toast.makeText(getApplicationContext(), "我要学好Android", Toast.LENGTH_SHORT);
toast.show();

而Toast.LENGTH_SHORT和Toast.LENGTH_SHORT实际上就是Toast类里的静态(static)int类型常量,定义如下图
在这里插入图片描述
使用案例1
AndroidStudio平台新建好一个Empty Project,如下图
在这里插入图片描述
在activity_main.xml里新建一个按钮,因为想实现点击按钮后通过Toast对象显示一条消息
activity_main.xml里的内容如下
在这里插入图片描述

接下来编写MainActivity.java
内容比较简单,就是在setOnContentView(R.layout.activity_main)后获取这个按钮,然后设置监听,如下

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    Button btn_1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_1 = findViewById(R.id.btn_1);
        //注意一定要先findViewById,这一步相当于Java里学的实例化对象,否则就是空对象了,空对象设置监听会闪退
        btn_1.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        int id = view.getId();
        if (id == R.id.btn_1){
            Toast toast = Toast.makeText(getApplicationContext(), "我要学好Android", Toast.LENGTH_SHORT);
            toast.show();
        }
    }
}

效果就不展示了(录屏结果我暂时不会转gif。。)

使用案例2
从上面结果来看(好吧,我没贴),虽然第三个参数是Toast.LENGTH_SHORT,但显示时间依然很长,如果多个按钮,每个按钮点击后显示消息不同,那么当用户点击很勤时,消息显示会有滞后,因此需要实现能够设定其显示时长。
实现方法如下:新建一个类,我这里命名为Toast_Customed,然后在该类里写一个static方法,然后MainActivity里的OnClick回调方法里调用这个static方法即可。
Toast_Customed.java内容如下(当然,第一次写,只会使用这种简单的方式,后面学了更好的方式再补充)

public class Toast_Customed {


    public static void ShowShorter(Context context, String word, int delay_ms){

        Toast toast = Toast.makeText(context, word, Toast.LENGTH_SHORT);
        toast.show();
        try {
            Thread.sleep(delay_ms);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        toast.cancel();
    }
}

然后在MainActivity中使用,如下

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    Button btn_1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_1 = findViewById(R.id.btn_1);
        //注意一定要先findViewById,这一步相当于Java里学的实例化对象,否则就是空对象了,空对象设置监听会闪退
        btn_1.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        int id = view.getId();
        if (id == R.id.btn_1){
//            Toast toast = Toast.makeText(getApplicationContext(), "我要学好Android", Toast.LENGTH_SHORT);
//            toast.show();
            Toast_Customed.ShowShorter(getApplicationContext(), "好好学习", 200);
        }
    }
}

效果就不展示了(录屏结果我暂时不会转gif。。),明显显示时间更短了,但有个问题是当我第三个参数delay_ms给太小了,好像不给显示了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值