博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android实现Toast快速刷新
阅读量:7026 次
发布时间:2019-06-28

本文共 3122 字,大约阅读时间需要 10 分钟。

通常我们使用Toast的时候可能会直接这样写:

Toast.makeText(context, text, duration).show();

这样写通常会有这样一个问题:新Toast要等上一次Toast结束后才能显示出来 

这里写图片描述 
这样的用户体验是不好的,当用户点的过快时,根本不知道提示出来的Toast是新的还是旧的,为了解决这个问题,我们应该全局保持一个单例的Toast,这样就可以进行快速刷新。

1.在MyApplication中创建Toast实例

public class MyApplication extends Application{    @Override    public void onCreate() {        super.onCreate();        ToastMgr.builder.init(getApplicationContext());    }    public enum ToastMgr{        builder;        private View view;        private TextView tv;        private Toast toast;        /**         * 初始化Toast         * @param context         */        public void init(Context context){            view = LayoutInflater.from(context).inflate(R.layout.toast_view, null);            tv = (TextView) view.findViewById(R.id.toast_textview);            toast = new Toast(context);            toast.setView(view);        }        /**         * 显示Toast         * @param content         * @param duration Toast持续时间         */        public void display(CharSequence content , int duration){            if (content.length()!=0) {                tv.setText(content);                toast.setDuration(duration);                toast.setGravity(Gravity.CENTER, 0, 0);                toast.show();            }        }    }}

2.写一个工具类

public class Utils {    /**     * 显示toast     * @param content  内容     * @param duration  持续时间     */    public static void toast(String content , int duration){        if (content == null) {            return;        }else {            MyApplication.ToastMgr.builder.display(content, duration);        }    }    /**     * 显示默认持续时间为short的Toast     * @param content  内容     */    public static void toast(String content){        if (content == null) {            return;        }else {            MyApplication.ToastMgr.builder.display(content, Toast.LENGTH_SHORT);        }    }}

3.在BaseActivity中可以进一步封装

我们在Activity中使用Toast的几率是非常大的,所以我们在Activity中每次使用Toast的时候都要Utils.toast() , 这样还是有点麻烦,所以我们可以在BaseActivity中进一步封装一下

public class BaseActivity extends Activity{    public void toast(String content){        Utils.toast(content);    }    public void toast(String content , int duration){        Utils.toast(content, duration);    }}

这样就非常方便了,我们可以看看Toast是否可以快速刷新

4.测试一下

public class MyActivity extends BaseActivity implements OnClickListener{    private Button mButton1;    private Button mButton2;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.my_activity);        initViews();        registerListener();    }    private void registerListener() {        mButton1.setOnClickListener(this);        mButton2.setOnClickListener(this);    }    private void initViews() {        mButton1 = (Button) findViewById(R.id.button1);        mButton2 = (Button) findViewById(R.id.button2);    }    @Override    public void onClick(View v) {        switch (v.getId()) {        case R.id.button1:            toast("Button1");            break;        case R.id.button2:            toast("Button2");            break;        }    }}

这里写图片描述

版权声明:欢迎转载,转载请注明出处http://blog.csdn.net/nugongahou110

你可能感兴趣的文章
CentOS 常用的命令
查看>>
出版业作家手稿成网络钓鱼***新目标
查看>>
使用elasticsearch1.5.2实现查找附近的人
查看>>
百度地图API简单应用——1.根据地址查询经纬度
查看>>
Linux初学者是否可以利用虚拟机来学习操作?
查看>>
wdcp nginx pathinfo rewrite 设置
查看>>
织梦加入百度主动推送代码
查看>>
lvs负载均衡群集
查看>>
Git命令集之一——配置参数
查看>>
优化不易,且写且珍惜!
查看>>
Linux学习笔记3——常规命令与文件管理命令
查看>>
第三关练习题 权限
查看>>
UIWebView支持跨域,WKWebView不支持!
查看>>
12月个人指标
查看>>
在spring中获取代理对象代理的目标对象工具类
查看>>
CountDownLatch和CyclicBarrier模拟同时并发请求
查看>>
Fedora 30接近最终版,但仍存在一些bug
查看>>
IOS开发--循环引用问题,普通控件为什么用weak,代理为什么用weak,block内用到外面的东...
查看>>
Java初学者怎么学习才能快速入门?
查看>>
AJPFX对选择和冒泡两种排序的理解
查看>>