Android进阶-悬浮窗

原创 2015年11月19日 20:24:06

Android进阶-悬浮窗

需求如标题,那么怎么做出这个效果呢? -> 主要依赖WindowManeger

我们使用WindowManeger,也可以把自己定义的一个控件(悬浮窗),可以在其他应用最上层,甚至手机桌面最上层显示窗口。
调用的是WindowManager继承自基类的addView方法和removeView方法来显示和隐藏窗口
悬浮窗口并不受activity的影响,他是隶属于启动它的应用程序所在进程。当进程挂掉,悬浮窗也会挂掉

  1. 每一个WindowManager对象都和一个特定的 Display绑定。
  2. 想要获取一个不同的display的WindowManager,可以用 createDisplayContext(Display)来获取那个display的 Context,、
  3. 之后再使用: Context.getSystemService(Context.WINDOW_SERVICE)来获取WindowManager。

下面代码自定义了一个Toast:
代码要点:
1. 使用WindowManager必须先获得权限: android.permission.SYSTEM_ALERT_WINDOW
2. 代码中获取的getDefaultDisplay(), 可以理解为屏幕
3. params是用来设置我们添加的控件的布局, 可以理解为xml文件中的布局属性
4. 控件的移除可使用removeView方法
5. params.gravity = Gravity.LEFT + Gravity.TOP;// 将重心位置设置为左上方,这样控件在布局时,会以
屏幕的左上角为坐标原点

    /**
     * 自定义归属地浮窗 需要权限android.permission.SYSTEM_ALERT_WINDOW
     */
    private void showToast(String text) {
        mWM = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);

        // 获取屏幕宽高
        winWidth = mWM.getDefaultDisplay().getWidth();
        winHeight = mWM.getDefaultDisplay().getHeight();

        params = new WindowManager.LayoutParams();
        params.height = WindowManager.LayoutParams.WRAP_CONTENT;
        params.width = WindowManager.LayoutParams.WRAP_CONTENT;
        params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
        params.format = PixelFormat.TRANSLUCENT;
        params.type = WindowManager.LayoutParams.TYPE_PHONE;// 电话窗口。它用于电话交互(特别是呼入)。它置于所有应用程序之上,状态栏之下。
        params.gravity = Gravity.LEFT + Gravity.TOP;// 将重心位置设置为左上方,
                                                    // 也就是(0,0)从左上方开始,而不是默认的重心位置
        params.setTitle("Toast");


        TextView tvText = (TextView) view.findViewById(R.id.tv_number);
        tvText.setText(text);

        mWM.addView(view, params);// 将view添加在屏幕上(Window)

    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android桌面悬浮窗进阶,QQ手机管家小火箭效果实现

本文转载自:http://blog.csdn.net/guolin_blog/article/details/16919859 今天是2013年的最后一天了,这里首先提前祝大家新年快乐!同时,本...

Android悬浮窗进阶版-下篇(福利篇)

在这一篇,我会分享自己写的悬浮窗工具类。 特点: 1.使用简单 2.已经写好移动事件(拖拽距离判断,拖拽时防点击事件) 3.自定义悬浮窗首次绘制位置(是自写的) ...

Android桌面悬浮窗进阶,QQ手机管家小火箭效果实现

今天是2013年的最后一天了,这里首先提前祝大家新年快乐!同时,本篇文章也是今年的最后一篇文章了,因此我想要让它尽量有点特殊性,比起平时的文章要多一些特色。记得在今年年初的时候,我写的第一篇文章是模仿...

Android桌面悬浮窗进阶,QQ手机管家小火箭效果实现

今天是2013年的最后一天了,这里首先提前祝大家新年快乐!同时,本篇文章也是我今年的最后一篇文章了,因此我想要让它尽量有点特殊性,比起平时的文章要多一些特色。记得在今年年初的时候,我写的第一篇文章是模...

Android桌面悬浮窗进阶,QQ手机管家小火箭效果实现

版权声明:本文出自郭霖的博客,转载必须注明出处。 转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/16919859 今天...

Android进阶2之PopupWindow弹窗(有点悬浮窗的感觉)

PopupWindow是一个可以用来显示一个任意的视图的弹出窗口,他需要完全依赖layout布局。 它没什么界面,在弹出的窗口中完全显示布局中的控件。 上面两个美女头就是弹...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)