androidoverlaytranslucency

How to keep the image on the screen while browsing through other applications


I am making application to create an image on the screen and the app on my phone and still use the phone function normally. I guess to use Overlay and Activity translucent but I can not use the phone function. I was wrong or am I missing something ? Can anyone help me please ? Thank you for reading.


Solution

  • I think you are looking for a "facebook-chat-head" like icon on top of all application. right?

    then its here,

    Allows an application to open windows using the type TYPE_SYSTEM_ALERT, shown on top of all other applications. Very few applications should use this permission; these windows are intended for system-level interaction with the user.

    Constant Value: "android.permission.SYSTEM_ALERT_WINDOW"

    here

    sample code:

    public class ChatHeadService extends Service {
    
      private WindowManager windowManager;
      private ImageView chatHead;
    
      @Override public IBinder onBind(Intent intent) {
        // Not used
        return null;
      }
    
      @Override public void onCreate() {
        super.onCreate();
    
        windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
    
        chatHead = new ImageView(this);
        chatHead.setImageResource(R.drawable.android_head);
    
        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;
        params.x = 0;
        params.y = 100;
    
        windowManager.addView(chatHead, params);
      }
    
      @Override
      public void onDestroy() {
        super.onDestroy();
        if (chatHead != null) windowManager.removeView(chatHead);
      }
    }
    

    Don't forget to start the service somehow:

    startService(new Intent(context, ChatHeadService.class));
    

    The full code here:

    please have a look at this thread: chat head related techniques