带图片的Toast及Toast使用的小技巧之Toast的封装

本文介绍了如何封装Toast以避免连续点击导致的频繁显示问题,提供了一个静态方法`ToastUtils.showSimpleToast()`,确保同一时间只显示一个Toast,并能更新内容。示例展示了在MainActivity中调用该方法显示普通Toast信息。
摘要由CSDN通过智能技术生成

关于Toast我们常用的是:

Toast.makeText(context,"this is a Toast",Toast.LENGTH_SHORT).show();


一、Toast的封装

但是这样做有一个不好的地方,就是当我们点击按钮触发Toast时,如果我们点击了3次,Toast就会触发3次。

如果用户手抖了一下多点了几次,导致Toast长时间关闭不了。又或者我们其实已经进行其他操作了,应该弹出

新的Toast提示了,而上个Toast还没有结束,这样的用户体验是不好的。


因此最好是将Toast做一次封装,如下:


  public class ToastUtils {
  private static Toast sToast;

  public static void showSimpleToast(Context context,String content){
  if(sToast==null){
  sToast=Toast.makeText(context,content,Toast.LENGTH_SHORT);
   }else{
   sToast.setText(content);
  }
   sToast.show();
 }


 可以看到,这里和我们平时使用Toast的方式并不一样,这里会先判断Toast对象是否为空,如果是空的情况下才会调用makeText()方法来去生成一个Toast对象,否则就直接调用setText()方法来设置显示的内容,最后再调用show()方法将Toast显示出来。由于不会每次调用的时候都生成新的Toast对象,因此刚才我们遇到的问题在这里就不会出现了。

调用的时候也很简单,只需要把Context对象和Toast要显示的内容传进来就可以了:

ToastUtils.showSimpleToast(MainActivity.this,"普通的Toast信息"); 

二、带图片的Toast
带图片效果的Toast其实也很容易实现,只要 Toast的setView()方法即可
代码如下:
sToast=new Toast(context);
sToast.setGravity(Gravity.BOTTOM,0,0);
ImageView imageView=new ImageView(MainActivity.this);
imageView.setImageResource(R.mipmap.ic_launcher);
LinearLayout ll=new LinearLayout(MainActivity.this);
ll.addView(imageView);
TextView textView=new TextView(MainActivity.this);
textView.setText("带图片的Toast信息");
ll.addView(textView);
sToast.setView(ll);
sToast.setDuration(Toast.LENGTH_SHORT);
sToast.show();


三、普通Toast和带图片Toast封装好的完整代码:

1、启动界面:就两个button
package com.yzw.android.mytoast;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
impor
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值