美文网首页
handler+message实现n秒后无操作自动消失功能

handler+message实现n秒后无操作自动消失功能

作者: Amy木婉清 | 来源:发表于2022-05-05 22:25 被阅读0次

    实现功能:某控件不操作10秒后,自动消失。如有一个弹窗 十秒后不操作,弹窗就消失

    所用知识:handler message
    首先定义变量

    //定义变量
    private EffectInVisiableHandler mtimeHandler;
    private final int MOBILE_QUERY = 1;
    

    然后在程序onCreate()的时候

    //程序启动时,初始化并发送消息
    mtimeHandler = new EffectInVisiableHandler();
    Message msg = mtimeHandler.obtainMessage(MOBILE_QUERY);
    mtimeHandler.sendMessageDelayed(msg, 10000);
    

    在某控件的onclick或ontouch事件中,重置message,即从新计时开始。

    View.OnTouchListener touchCenterLayoutListener=new View.OnTouchListener() {            
                public boolean onTouch(View v, MotionEvent event) {    
                    switch(event.getAction())
                    {
                    case MotionEvent.ACTION_DOWN:
                        resetTime();
                        //做相应操作
                        break;
                    case MotionEvent.ACTION_UP:
                        break;
                    }
                    return true;
                }
            };
     
    //到达多少秒后做相应操作
    private class EffectInVisiableHandler extends Handler
            {
                @Override
                public void handleMessage(Message msg)
                {
                    switch(msg.what)
                    {
                    case MOBILE_QUERY:                   
                        //当10秒到达后,作相应的操作
                        //比如将弹窗移除屏幕之类的....(这里需要根据你的需求写相应的代码)
                        break;
     
                    }
                }
            }
     
    
            //重置时间的方法
            public void resetTime() {
                mtimeHandler.removeMessages(MOBILE_QUERY);        
                Message msg = mtimeHandler.obtainMessage(MOBILE_QUERY);
                mtimeHandler.sendMessageDelayed(msg, 10000);            
            }
    

    相关文章

      网友评论

          本文标题:handler+message实现n秒后无操作自动消失功能

          本文链接:https://www.haomeiwen.com/subject/yvdtsrtx.html