【场景】:当一个比如listview多次点击toast,这时候会出现toast延迟的情况
【处理】:以最后一次toast为准处理
【使用方法】:
private ToastUtils mToastUtils;
mToastUtils = new ToastUtils(this);
mToastUtils.toast("toast"); //默认的持续的时间是0
mToastUtils.toast("toast",1);//可以自定义toast的持续时间
【实现如下】:
ToastUtils.java
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class ToastUtils {
public ToastUtils(Context context) {
ToastMsg.BUILDER.init(context);
}
public enum ToastMsg {
BUILDER;
private Toast toast;
private TextView tv;
private View view;
private void init(Context context) {
view = LayoutInflater.from(context).inflate(R.layout.toast, null);
tv = (TextView) view.findViewById(R.id.tv_toast);
toast = new Toast(context);
toast.setView(view);
}
public void showToast(CharSequence text, int duration) {
if (text.length() != 0) {
tv.setText(text);
toast.setDuration(duration);
toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0,
40);
toast.show();
}
}
public void showToast(int id, int duration) {
if (id != 0) {
tv.setText(id);
toast.setDuration(duration);
toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0,
40);
toast.show();
}
}
}
public void toast(String text) {
ToastMsg.BUILDER.showToast(text, 0);
}
public void toast(String text, int duration) {
ToastMsg.BUILDER.showToast(text, duration);
}
public void toast(int id) {
ToastMsg.BUILDER.showToast(id, 0);
}
}
toast.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/toast_frame"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="left|center"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:shadowColor="@android:color/white"
android:shadowDx="1.0"
android:shadowDy="1.0"
android:textColor="@android:color/white"
android:textSize="14.0sp" />
</LinearLayout>
toast_frame.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners android:radius="4dip" />
<padding
android:bottom="10dip"
android:left="6dip"
android:right="6dip"
android:top="10dip" />
<gradient
android:endColor="#323336"
android:startColor="#323336" />
<stroke
android:width="1dip"
android:color="#ffffff" />
</shape>