第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > android toast防重_安卓Toast自定义及防止重复显示

android toast防重_安卓Toast自定义及防止重复显示

时间:2021-04-30 18:50:20

相关推荐

android toast防重_安卓Toast自定义及防止重复显示

Toast是安卓系统中,用户误操作时或某功能执行完毕时,对用户的一种提示,它没有焦点,并在一定时间内会消失,但用户连续误操作(如登录时,密码错误)多次时,则会有多个Toast被创建,系统会把这些toast放进队列中,等待上个Toast 显示完毕,接着显示下一个,那么用户则会看到多次Toast提示,无论你退出软件与否,这样给用户的体验则大打折扣,所以我们需要做的是,若Toast已在显示(也就是Toast!=null)时,就不用再重新new了,直接setText要显示的信息即可,只有Toast为空时,才重新new,分析到这里,大家应该明白怎么去写了吧。第二个问题是,为了使Toast能跟我们自己的应用风格搭配,常常需要我们自定义Toast显示,接下来,我们就来解决这两个问题:

既然为自定义,则常常会有个自定义布局,并加入自定义背景——custom_toast.xml:

android:layout_width="wrap_content"

android:layout_height="35dp"

android:background="@drawable/toast_bg"

android:padding="10dp" >

android:id="@+id/toast_message"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:gravity="center"

android:maxLines="2"

android:textColor="@color/text"

android:textSize="14sp"

android:paddingLeft="2dp"

android:paddingRight="2dp"

android:text="网络连接失败"/>

接下来看主代码:

import android.content.Context;

import android.os.Handler;

import android.view.Gravity;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.TextView;

import android.widget.Toast;

/**

*

* @author byl

*/

public class ToastUtil {

private static Toast mToast;

private static Handler mHandler = new Handler();

private static Runnable r = new Runnable() {

public void run() {

mToast.cancel();

mToast=null;//toast隐藏后,将其置为null

}

};

public static void showShortToast(Context context, String message) {

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View view = inflater.inflate(R.layout.custom_toast, null);//自定义布局

TextView text = (TextView) view.findViewById(R.id.toast_message);//显示的提示文字

text.setText(message);

mHandler.removeCallbacks(r);

if (mToast == null){//只有mToast==null时才重新创建,否则只需更改提示文字

mToast = new Toast(context);

mToast.setDuration(Toast.LENGTH_SHORT);

mToast.setGravity(Gravity.BOTTOM, 0, 150);

mToast.setView(view);

}

mHandler.postDelayed(r, 1000);//延迟1秒隐藏toast

mToast.show();

}

}

使用时,直接调用showShortToast()方法即可,如:ToastUtil.showShortToast(this,"密码不能为空"),

效果会是这样的:

原文:/baiyuliang/article/details/38655495

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。