zoukankan      html  css  js  c++  java
  • Toast和Handler的间隔使用

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

       }

    }

    }
  • 相关阅读:
    js使用sessionStorage、cookie保存token
    在vue项目中的main.js中直接使用element-ui中的Message 消息提示、MessageBox 弹框、Notification 通知
    git报错:'fatal:remote origin already exists'怎么处理、附上git常用操作以及说明
    Module build failed: TypeError: loaderContext.getResolve is not a function
    Git相关命令
    用户反馈录
    静雅斋数学[目录]
    探索|尝试编制高质量的跟踪训练试卷
    直线参数方程何时必须化为标准形式
    快速高效的做三角函数图像
  • 原文地址:https://www.cnblogs.com/Greenwood/p/1966489.html
Copyright © 2011-2022 走看看