自定义的Toast
建议大家花10分钟到半小时左右的时间看一下Toast
的源码
1.需求问题
平时使用的Toast并不能满足用户的需求, 我们可以使用自定义的Toast, 这种自定义的Toast能够覆盖已经执行了的Toast语句,但还没有在屏幕上消失。 意思就是系统自带的Toast,它是以队列的形式输出的, 必须要等上一个Toast 语句消失后, 才会显示下一个Toast语句, 而自定义的没有这种限制条件。话不多说, 直接上代码。
2.需要用到的代码
(1) . 需要一个shape图形(状态列表图形),名称为toast_backgound.xml
这是自定义Toast的背景,便于显示,可以用黑底白字, 或者白底黑字,我这里所使用的是黑底白字。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="10dp"/>
<solid android:color="#CC000000"/>
</shape>
注:一些需要注意的地方我都做了注释说明
(2) . 需要自定义一个BToast继承Toast类,名称为BToast.java
。
package com.example.myapplication;
import android.content.Context;
import android.text.Layout;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class BToast extends Toast {
private BToast (Context context) {
super(context);
}
private static BToast toast;