悬浮窗与Home Back事件

来源:互联网 发布:数据运营的书 编辑:程序博客网 时间:2024/06/03 22:55

搜悬浮窗可以搜到很多方法,但针对Home  、  back  事件具体的很少。

最近公司让我在做这方面的功能,集中众人力量,受益匪浅啊。

简单介绍吧,悬浮窗接收不到Home监听;back也不能直接给悬浮窗,试过一些博客的做法,view.setKeyEventListener处理是不成功的。

home思路:

要想启动悬浮窗时接收到home的监听,需要同时启动一个activity,将home监听交给activity,监听时消失掉悬浮窗。否则不用想通过按home消失悬浮窗。

当然有人问了,那写的功能直接写在activity就行了呗。我们公司的规定,尽量少写activity,少动manifest文件。我这种小菜鸟,还不到能动这些组件的权利,能规避就规避。

 

back思路:

悬浮窗的view用的xml文件,线性布局或相对布局等,要重写几个方法 public boolean dispatchTouchEvent(MotionEvent event) {} 、public boolean dispatchKeyEvent(KeyEvent event) {}等

而调setKeyEventListener()方法的主体,必须是重写过上面方法的布局的id转化:重写布局类  layout = (重写布局类) inflater.inflate(R.layout.view_float, null);

layout.setKeyEventListener(new KeyEventListener() {

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
     return false;
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
         return false;
    }

    @Override
    public boolean onBackPressed() {
     return false;
    }
   });

接口类,有关上面的三个方法

public interface KeyEventListener {

 boolean onKeyDown(int keyCode, KeyEvent event);

 boolean onKeyUp(int keyCode, KeyEvent event);

 boolean onBackPressed();
}

如此才会成功。

 

刚刚从公司大牛处得知,长按home进入进程时让悬浮窗消失更麻烦,我在研究中

下面链接是研究的一个文章:

http://blog.csdn.net/harhy/article/details/8724779

0 0
原创粉丝点击