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

实现功能:某控件不操作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);            
        }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容