Comment dessiner une vue sur tout?

Je souhaite créer une application qui peut créer une notification sur l'écran en plus de tout ce qui est actuellement affiché. Quelque chose comme le message SMS Go SMS ou quelque chose comme ChatHead dans la photo suivante:

Entrez la description de l'image ici

  • Cordova: Impossible d'installer apk après la mise à niveau d'Android vers 5.1.1 Nexus 5
  • Android usb host api et stockage USB
  • Comment ouvrir un fichier pdf en utilisant jquery et phonegap dans Android?
  • Android: l'espace de travail eclipse prend beaucoup de temps à construire?
  • Firebase Dynamic Links ne relie pas profondément avec une URL courte sur les onglets personnalisés
  • Les objets personnalisés sont-ils passés par valeur ou passés par référence dans les fragments et les activités?
  • Ce serait encore mieux s'il est possible de le faire dynamiquement, y compris les événements tactiles. Quelle est la manière conventionnelle ou standard de faire cela?

    Exemple:

    Comme une icône qui peut être cliquée ou traînée, que vous soyez sur l'écran d'accueil ou le tiroir d'application ou d'autres applications. Prenez l'attention sur les icônes circulaires situées près des bords de l'écran dans l'image affichée. Vous pouvez les faire glisser n'importe où dans n'importe quelle application.

    5 Solutions collect form web for “Comment dessiner une vue sur tout?”

    Ce que vous cherchez, c'est la fenêtre d'alerte système.

    Il y a une bibliothèque appelée StandOut ! Qui vous aidera à créer de telles applications.

    Voici comment des choses comme Toast et les fenêtres de dialogue fonctionnent:

    Dans le cas où l'ajout ou la mise en avant ne fonctionne pas, disons que lorsque vous avez un service, ajoutez sa propre vue à une autre activité ou application client (FaceUnlock le fait) ou vous ne pouvez pas dépendre des hiérarchies, vous devez utiliser la fenêtre Manager et un jeton de fenêtre pour faire le tour. Vous pouvez ensuite créer des mises en page et profiter des animations et de l'accélération matérielle comme précédemment.

    WindowManager windowManager = (WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.FIRST_SUB_WINDOW); layoutParams.width = 300; layoutParams.height = 300; layoutParams.format = PixelFormat.RGBA_8888; layoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; layoutParams.token = getWindow().getDecorView().getRootView().getWindowToken(); //Feel free to inflate here mTestView = new View(this); mTestView.setBackgroundColor(Color.RED); //Must wire up back button, otherwise it's not sent to our activity mTestView.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { onBackPressed(); } return true; } }); windowManager.addView(mTestView, layoutParams); 

    Ensuite, assurez-vous d'enlever la vue sur Destroy (ou sur Paause) ou vous vous écraserez

      if (mTestView != null) { WindowManager windowManager = (WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE); if (mTestView.isShown()) { windowManager.removeViewImmediate(mTestView); } } 

    Vous n'avez pas besoin d'une nouvelle activité pour le faire. Tout ce que vous devez faire, c'est d'ajouter une autre vue à votre activité existante et de l'amener à l'avant, et de dessiner / écrire les choses que vous voulez dans cette vue.

    Si vous souhaitez faire des choses spéciales avec cette vue supplémentaire, vous pouvez créer votre propre classe de vue

     class DrawOnTop extends View { public DrawOnTop(Context activity) { super(activity); } @Override protected void onDraw(Canvas canvas) { // put your drawing commands here } } 

    Et vous faites quelque chose comme

     DrawOnTop mDraw = new DrawOnTop(this); addContentView(mDraw, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); mDraw.bringToFront(); 

    Ensuite, pour le forcer à dessiner, vous devez utiliser mDraw.invalidate ();

    Vous pourriez avoir le parent de votre mise en page entière comme RelativeLayout. Le premier enfant étant la «racine» de votre disposition principale. Quelque chose après cela peut être considéré comme une superposition qui est susceptible de vos caprins.

    Exemple:

     <RelativeLayout> <LinearLayout> ... Main Layout here ... </LinearLayout> <TextView left="20dip" top="20dip" text="Overlay" alpha="0.7" /> </RelativeLayout> 

    La meilleure façon est de démarrer un service avec votre application. Créez un ImageView. Définissez les paramètres de mise en page de la vue d'image. Ajoutez la vue avec les paramètres au gestionnaire de fenêtres lorsque le service est créé.

    ALL SET Votre image colle à votre fenêtre (à n'importe quel écran sur toutes les applications), jusqu'à ce que votre application soit fermée.

    Vous pouvez même ajouter onclicklisteners et ontouchlisteners à la vision d'image. Par exemple. OnClick les auditeurs pour effectuer certaines actions et Ontouchlisteners déplacer l'image sur l'écran.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.