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; } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!