欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Toast和Handler的间隔使用实例

程序员文章站 2023-11-16 17:38:22
    本人在项目开发过程,需要实现一个“来电归属地”的功能,因此用到了toast。但toast的显示时间,不受我们控制,系统只提供了两个配置...

    本人在项目开发过程,需要实现一个“来电归属地”的功能,因此用到了toast。但toast的显示时间,不受我们控制,系统只提供了两个配置参数,分别是length_long,length_short。因为要让toast长期显示,需要另外一个线程,每隔一个时间段,就循环显示一次。
       先说明一下,本次需要用到handle机制,因此不了解或者不熟悉handle的同学,请先去看看android上的handle机制!
       下面开始讲解代码实现详情!
       先写一个包装类,就叫mytoast吧,如下

复制代码 代码如下:

       public class mytoast {
          private context mcontext = null;
          private toast mtoast = null;
          private handler mhandler = null;
          private runnable mtoastthread  = new runnable() {
            @override
            public void run() {
              mtoast.show();
              mhandler.postdelayed(mtoastthread, 3000);//每隔3秒显示一次,经测试,这个时间间隔效果是最好
            }
         };
         public mytoast(context context){
           mcontext = context;
           mhandler = new handler(mcontext.getmainlooper());
           mtoast = toast.maketext(mcontext, "*@飞翔", toast.length_long);
         }
         public void settext(string text){
           mtoast.settext(text);
         }
        public void show(){
          mhandler.post(mtoastthread);
        }
       public void cancel() {
        mhandler.removecallbacks(mtoastthread);//先把显示线程删除
        mtoast.cancel();// 把最后一个线程的显示效果cancel掉,就一了百了了
       }
    }

mainactivity 的代码如下:
复制代码 代码如下:

  public class mainactivity extends activity implements onclicklistener{
     private button show_button;
    private button cancel_button;
    private mytoast mytoast;
    /** called when the activity is first created. */
    @override
    public void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.main);
        show_button = (button) findviewbyid(r.id.show_button);
        cancel_button = (button) findviewbyid(r.id.cancel_button);
        show_button.setonclicklistener(this);
        cancel_button.setonclicklistener(this);
        mytoast = new mytoast(this);
    }
   @override
   public void onclick(view v) {
    if(v == show_button){
      mytoast.show();
    }else if (v == cancel_button) {
     mytoast.cancel();
   }
}
}