This can be done by creating a Service that adds a view to the current WindowManager :
public class OverlayService extends Service { @Override public void onCreate() { super.onCreate(); WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); View overlay = ; WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, PixelFormat.TRANSLUCENT); windowManager.addView(overlay , params); } @Override public IBinder onBind(Intent intent) { return null; } }
But you need this extra permission:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
And then just register the service in the manifest:
<service android:name=".OverlayService" ></service>
and run it:
startService(new Intent(this, OverlayService.class));
source share