Fügen Sie eine Ansicht über alle Aktivitäten hinzu

Ich entwickle eine Android-Anwendung. Ich möchte in der Lage sein, eine Ansicht durch Code hinzuzufügen, die in die Oberseite aller Tätigkeiten auf der Anwendung gezeichnet wird.

Ich habe versucht, es dem Fenstermanager hinzuzufügen:

  • Gibt es eine Möglichkeit, Referenzen für alle derzeit aktiven Fragmente in einer Aktivität zu bekommen?
  • Hinzufügen eines Farbfilters zu einem Drawable ändert alle Schaltflächen mit demselben Drawable
  • Wie man ein Bild aus der Fotogalerie des Telefons erreicht?
  • Zusätzliches Element zum Cursoradapter android hinzufügen
  • In Android, wie setze ich Margen in dp programmgesteuert ein?
  • Android HttpsUrlConnection eofexception
  • LayoutInflater inflater = activity.getLayoutInflater(); layout = inflater.inflate(R.layout.toast_layout, null); WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.gravity = Gravity.BOTTOM; params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.type = WindowManager.LayoutParams.TYPE_TOAST; final WindowManager mWindowManager = (WindowManager); activity.getApplicationContext().getSystemService(Context.WINDOW_SERVICE); mWindowManager.addView(layout, params); 

    Allerdings füge es so hinzu, dass ich zwei Probleme habe:

    1.Das Layout wird immer noch angezeigt, wenn ich meine App beenden werde.

    2.Das Layout reagiert nicht auf Klickereignisse.

    Gibt es eine andere Lösung, um dies zu erreichen?

    Vielen Dank.

  • Wähle Ordner auf Android-Gerät
  • Wie kann ich die 'Add Contact' Aktivität in android starten?
  • Android: 9-Patch-Wiederholungsmuster statt Stretching
  • Ergebnis aus einer Aktivität nach beenden () erhalten; In einem Android-Unit-Test
  • Laden Sie große Datei in Android ohne Outofmemory Fehler
  • Wie kann man einen AVD (Emulator) in den OFFLINE Modus stellen?
  • 3 Solutions collect form web for “Fügen Sie eine Ansicht über alle Aktivitäten hinzu”

    LayoutParams Typ von TYPE_TOAST zu TYPE_APPLICATION und lösche vorherige Flaggen, die ich vorgeschlagen habe,

    Und erstellen Sie eine BaseActivity für alle Aktivitäten in Ihrer App, in dieser Aktivität in onResume() fügen Sie diese Ansicht zu WindowManager und in onPause() , entfernen Sie diese Ansicht wie,

      windowManager.removeView(view); 

    1) Erstellen Sie BaseActivity, die Aktivität erweitert.

    2) Jetzt deine ganze Aktivität sollte BaseActivity statt Aktivität erweitern

    3) Overset setContentView () -Methode.

    4) Erstellen Sie leere vertikale linearLayout in dieser Methode.

    5) Füge dein TopView in diesem Layout hinzu

    6) Und dann fügen Sie aufgeblasenen Blick in diesem linearenlayout

    7) Und schließlich ruf super.setContentView (passLinearLayoutHere)

    Wie kann ich das implementieren?

     import android.app.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.LinearLayout; public class BaseActivity extends Activity { @Override public void setContentView(int resId) { LinearLayout screenRootView = new LinearLayout(this); screenRootView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); screenRootView.setOrientation(LinearLayout.VERTICAL); // Create your top view here View topView = new View(this); // Replace this topview with your view LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View screenView = inflater.inflate(resId, null); topView.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //You will get onclick here of your topview in whatever screen it is clicked } }); screenRootView.addView(topView); screenRootView.addView(screenView); super.setContentView(screenRootView); } } 

    Um die Show / Ansicht der Ansicht zu verwalten, habe ich die von Gopal vorgeschlagene Lösung benutzt. Ich habe onStop und onResume-Events angehängt, so dass die Ansicht beim Verlassen der Anwendung ausgeblendet ist.

    Für die Klickereignisse habe ich erkannt, dass der Typ Toast nicht auf Klickereignisse reagiert. Deshalb habe ich den Typ geändert

     params.type = WindowManager.LayoutParams.TYPE_TOAST; 

    nach

     params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; 

    Ich muss auch die folgende Genehmigung hinzufügen:

     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.