Overlay screen on Android

user2988203 picture user2988203 · Dec 18, 2013 · Viewed 8.2k times · Source

How is it possible to add Views/Images to my homescreen?

The best example is the facebook messenger: If you long-click at a chat item, you can choose "pop out cheat head", then you have a small button overlaying your screen.

There are also apps like screen-breakers, an image from a broken display overlays everything from the phone.

I've searched for it, but I have no idea what it is called.

I hope you guys are able to understand my english.

Answer

Techfist picture Techfist · Dec 18, 2013

Answer is SYSTEM_ALERT_WINDOW, this give you capability to draw over any thing in android, same feature facebook is using for drawing its chat heads.

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

Sample Code:

    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);