本人在项目开发过程,需要实现一个“来电归属地”的功能,因此用到了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(); 
   } 

}

转自http://www.189works.com/article-12573-1.html

posted on 2011-05-03 20:54  threecc  阅读(479)  评论(0编辑  收藏  举报