【问题标题】:Overlay screen on AndroidAndroid上的覆盖屏幕
【发布时间】:2013-12-18 12:41:16
【问题描述】:

如何将视图/图像添加到我的主屏幕?

最好的例子是 facebook messenger:如果你长按一个聊天项目,你可以选择“弹出作弊头”,然后你的屏幕上有一个小按钮。

还有一些应用程序,例如屏幕断路器,屏幕损坏的图像会覆盖手机中的所有内容。

我已经搜索过了,但我不知道它叫什么。

希望你们能听懂我的英文。

【问题讨论】:

    标签: android overlay homescreen


    【解决方案1】:

    答案是 SYSTEM_ALERT_WINDOW,这使您能够在 android 中绘制任何东西,与 facebook 用于绘制其聊天头像的功能相同。

    http://developer.android.com/reference/android/Manifest.permission.html#SYSTEM_ALERT_WINDOW

    示例代码:

        private WindowManager windowManager;
        private ImageView imageView;
       // Get window manager reference
    
        windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
    
        imageView= new ImageView(YOUR_CONTEXT_HERE);
        imageView.setImageResource(R.drawable.android_head);
    
        // Setup layout parameter
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);
    
        params.gravity = Gravity.TOP | Gravity.LEFT; // Orientation
        params.x = 100; // where you want to draw this, coordinates
        params.y = 100;
        // At it to window manager for display, it will be printed over any thing
        windowManager.addView(chatHead, params);
    
    
       // Make sure to remove it when you are done, else it will stick there until you reboot
       // Do keep track of same reference of view you added, don't mess with that
       windowManager.removeView(imageView);
    

    【讨论】:

    • 谢谢,可以,但是如果我想在关闭应用后看到它,我必须使用服务?!
    • 是的,那么您必须通过服务使用它,请接受它作为答案然后帮助他人:)
    • 我还有一个问题,我可以用windowmanager.removeView(view)删除视图,但是没有效果。第二次尝试说它已经被删除,但我仍然可以看到它......
    • 您可能搞砸了实例,窗口管理器没有附加到活动的生命周期或任何其他上下文项,因此如果您在删除上下文之前错过删除任何附加视图,它就会消失除非你重新启动你的设备,否则这就是你的情况,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多