【发布时间】:2013-12-18 12:41:16
【问题描述】:
如何将视图/图像添加到我的主屏幕?
最好的例子是 facebook messenger:如果你长按一个聊天项目,你可以选择“弹出作弊头”,然后你的屏幕上有一个小按钮。
还有一些应用程序,例如屏幕断路器,屏幕损坏的图像会覆盖手机中的所有内容。
我已经搜索过了,但我不知道它叫什么。
希望你们能听懂我的英文。
【问题讨论】:
标签: android overlay homescreen
如何将视图/图像添加到我的主屏幕?
最好的例子是 facebook messenger:如果你长按一个聊天项目,你可以选择“弹出作弊头”,然后你的屏幕上有一个小按钮。
还有一些应用程序,例如屏幕断路器,屏幕损坏的图像会覆盖手机中的所有内容。
我已经搜索过了,但我不知道它叫什么。
希望你们能听懂我的英文。
【问题讨论】:
标签: android overlay homescreen
答案是 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);
【讨论】: