Android 自定义 Toast 显示时间
Android自定义Toast显示时间
实现代码:
packagecom.wm.realname.util;
importandroid.content.Context;
importandroid.os.Handler;
importandroid.view.View;
importandroid.widget.Toast;
/**
*Toast自定义显示时间
*使用方法
*1.先初始化类MyToastmyToast=newMyToast(this);
*2.显示消息myToast.setText("要显示的内容");//设置要显示的内容
*myToast.show(8000);//传入消息显示时间,单位毫秒,最少2000毫秒,并且只能是2000的倍数。
*传入0时会一直显示,只有调用myToast.cancel();时才会取消。
*3.取消消息显示myToast.cancel();
**/
publicclassToastUtil{
privateContextmContext=null;
privateToastmToast=null;
privateHandlermHandler=null;
privateintduration=0;
privateintcurrDuration=0;
privatefinalintDEFAULT=2000;
privateRunnablemToastThread=newRunnable(){
publicvoidrun(){
mToast.show();
mHandler.postDelayed(mToastThread,DEFAULT);//每隔2秒显示一次
if(duration!=0){
if(currDuration<=duration){
currDuration+=DEFAULT;
}else{
cancel();
}
}
}
}
publicToastUtil(Contextcontext){
mContext=context;
currDuration=DEFAULT;
mHandler=newHandler(mContext.getMainLooper());
mToast=Toast.makeText(mContext,"",Toast.LENGTH_LONG);
}
publicvoidsetText(Stringtext){
mToast.setText(text);
}
publicvoidshow(intduration){
this.duration=duration;
mHandler.post(mToastThread);
}
publicvoidsetGravity(intgravity,intxOffset,intyOffset){
mToast.setGravity(gravity,xOffset,yOffset);
}
publicvoidsetDuration(intduration){
mToast.setDuration(duration);
}
publicvoidsetView(Viewview){
mToast.setView(view);
}
publicvoidcancel(){
mHandler.removeCallbacks(mToastThread);//先把显示线程删除
mToast.cancel();//把最后一个线程的显示效果cancel掉,就一了百了了
currDuration=DEFAULT;
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!