Como implementair uma sobreposition popup que pode ser exibida em qualquer outro aplicativo no Android

Como posso implementair uma sobreposition popup paira um aplicativo que pode ser exibido em qualquer outro aplicativo.

O Facebook implementou um recurso muito pairecido chamado Chatheads na sua nova viewsão do Facebook Messanger. Fiquei muito surpreso ao view que isso é um pouco possível. Na image, você vê um chathead (cão à direita) em outro aplicativo.

  • Como implemento a visualização detalhada (list)?
  • Como faço paira usair o Google URL Shortener API no Android?
  • O GPLv2 é compatível com a iOS App Store e o Android Mairket?
  • addView não funciona
  • Como desativair o colapso do CollapsingToolbair quando o scroll não tem conteúdo?
  • Como desenvolview notifications push paira o Android sem usair o Google Cloud Messaging?
  • Chathead do Facebook Messanger sobre outro aplicativo

  • Android Gradle: o que é javaMaxHeapSize "4g"?
  • Solução rápida paira NetworkOnMainThreadException
  • Json Pairsing da Url no Android, não funciona
  • Abrir o file local html com o browser Android
  • Transições de atividade não estão funcionando
  • Gradle assemblyDebug e preDexDebug crashm com CircleCI
  • 5 Solutions collect form web for “Como implementair uma sobreposition popup que pode ser exibida em qualquer outro aplicativo no Android”

    código fonte completo aqui http://www.piwai.info/chatheads-basics/
    Nota: Você precisairá <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

     public class ChatHeadService extends Service { private WindowManager windowManager; private ImageView chatHead; @Oviewride public IBinder onBind(Intent intent) { // Not used return null; } @Oviewride public void onCreate() { super.onCreate(); windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); chatHead = new ImageView(this); chatHead.setImageResource(R.drawable.android_head); WindowManager.LayoutPairams pairams = new WindowManager.LayoutPairams( WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.TYPE_PHONE, WindowManager.LayoutPairams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); pairams.gravity = Gravity.TOP | Gravity.LEFT; pairams.x = 0; pairams.y = 100; windowManager.addView(chatHead, pairams); } @Oviewride public void onDestroy() { super.onDestroy(); if (chatHead != null) windowManager.removeView(chatHead); } } return nulo; public class ChatHeadService extends Service { private WindowManager windowManager; private ImageView chatHead; @Oviewride public IBinder onBind(Intent intent) { // Not used return null; } @Oviewride public void onCreate() { super.onCreate(); windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); chatHead = new ImageView(this); chatHead.setImageResource(R.drawable.android_head); WindowManager.LayoutPairams pairams = new WindowManager.LayoutPairams( WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.TYPE_PHONE, WindowManager.LayoutPairams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); pairams.gravity = Gravity.TOP | Gravity.LEFT; pairams.x = 0; pairams.y = 100; windowManager.addView(chatHead, pairams); } @Oviewride public void onDestroy() { super.onDestroy(); if (chatHead != null) windowManager.removeView(chatHead); } } } public class ChatHeadService extends Service { private WindowManager windowManager; private ImageView chatHead; @Oviewride public IBinder onBind(Intent intent) { // Not used return null; } @Oviewride public void onCreate() { super.onCreate(); windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); chatHead = new ImageView(this); chatHead.setImageResource(R.drawable.android_head); WindowManager.LayoutPairams pairams = new WindowManager.LayoutPairams( WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.TYPE_PHONE, WindowManager.LayoutPairams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); pairams.gravity = Gravity.TOP | Gravity.LEFT; pairams.x = 0; pairams.y = 100; windowManager.addView(chatHead, pairams); } @Oviewride public void onDestroy() { super.onDestroy(); if (chatHead != null) windowManager.removeView(chatHead); } } } public class ChatHeadService extends Service { private WindowManager windowManager; private ImageView chatHead; @Oviewride public IBinder onBind(Intent intent) { // Not used return null; } @Oviewride public void onCreate() { super.onCreate(); windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); chatHead = new ImageView(this); chatHead.setImageResource(R.drawable.android_head); WindowManager.LayoutPairams pairams = new WindowManager.LayoutPairams( WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.TYPE_PHONE, WindowManager.LayoutPairams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); pairams.gravity = Gravity.TOP | Gravity.LEFT; pairams.x = 0; pairams.y = 100; windowManager.addView(chatHead, pairams); } @Oviewride public void onDestroy() { super.onDestroy(); if (chatHead != null) windowManager.removeView(chatHead); } } } public class ChatHeadService extends Service { private WindowManager windowManager; private ImageView chatHead; @Oviewride public IBinder onBind(Intent intent) { // Not used return null; } @Oviewride public void onCreate() { super.onCreate(); windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); chatHead = new ImageView(this); chatHead.setImageResource(R.drawable.android_head); WindowManager.LayoutPairams pairams = new WindowManager.LayoutPairams( WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.TYPE_PHONE, WindowManager.LayoutPairams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); pairams.gravity = Gravity.TOP | Gravity.LEFT; pairams.x = 0; pairams.y = 100; windowManager.addView(chatHead, pairams); } @Oviewride public void onDestroy() { super.onDestroy(); if (chatHead != null) windowManager.removeView(chatHead); } } 

    Este é um exemplo mínimo, simples e geral de uma sobreposition de estilo "chathead" flutuante.

    Ele usa o seguinte código paira tornair as coisas flutuantes:

     windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); chatHead = new ImageView(this); chatHead.setImageResource(R.drawable.floating); final WindowManager.LayoutPairams pairams = new WindowManager.LayoutPairams( WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.TYPE_PHONE, WindowManager.LayoutPairams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); 

    A fonte de fonte completa pode ser encontrada aqui (sob a licença Apache).

    Eu sei que está atrasado paira postair a resposta, vou publicá-lo de qualquer maneira paira outras pessoas que estão buscando a resposta

    AndroidFloatingImage

    Há uma biblioteca paira isso se você quiser um comportamento semelhante ao Messenger: Bubbles .

    Se você preferir implementá-lo, olhe o Gerenciador de Janelas como outros sugerem. Você também pode dair uma olhada no código-fonte da Bubbles paira se inspirair.

    Cada atividade, dialog, bem como service é anexado com uma window. O Facebook mantém um service executado em segundo plano e no service eles buscam o object gerenciador de windows por

    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

    Criair layouts de layout necessários ao adicionair sua visualização

     WindowManager.LayoutPairams pairams = new WindowManager.LayoutPairams( WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.TYPE_PHONE, WindowManager.LayoutPairams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); 

    agora adicione sua visão ao gerenciador de windows seguindo o método

     windowManager.addView(yourView, pairams); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.