博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Toast和Handler的间隔使用
阅读量:4673 次
发布时间:2019-06-09

本文共 1702 字,大约阅读时间需要 5 分钟。

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

转载于:https://www.cnblogs.com/Greenwood/archive/2011/02/27/1966489.html

你可能感兴趣的文章
随手练——打印折痕方向
查看>>
IE浏览器上传文件时本地路径变成”C:\fakepath\”的问题
查看>>
安装php扩展后,执行时找不到扩展 class xxx no found
查看>>
Configuring IPMI under Linux using ipmitool
查看>>
简单封装微信小程序
查看>>
asp.net core mvc视频A:笔记2-4.ActionResult(动作结果,即返回值)
查看>>
dinic
查看>>
linux下各目录的作用
查看>>
JAVA File转Byte[]
查看>>
在Java中==的一个坑
查看>>
华三接入交换机推荐
查看>>
爬取豆瓣电影
查看>>
Android中的设计模式之观察者模式
查看>>
多线程实战(二)线程同步
查看>>
flask-uploads扩展的使用笔记
查看>>
Best Time to Buy and Sell Stock III O(n) 求解方法
查看>>
web api+递归树型结构
查看>>
VMware Linux 下 Nginx 安装配置 (一)
查看>>
redis模块
查看>>
win7 安装 memcached
查看>>