2012-11-15 2 views
17

GrundsätzlichAndroid, wie zu verwischen/Glas/Frost aktuelle Aktivität

In einer Aktivität habe ich eine ListView. Wenn ich ein Element auswähle, wird eine transparente Aktivität als kleines Kästchen geöffnet. Wenn dieses Feld angezeigt wird, können Sie immer noch sehen die bisherigen Aktivitäten Bildschirm,

Was ich versuche, ist, herauszufinden, wie die vorherigen Bildschirm verschwimmen wie die Bild here (Ignorieren Sie die Benutzeroberfläche verknüpft, auf dem unscharfen Gras anschauen Bereich).

Wie ist das möglich?

Vielen Dank für einen Hinweis.

Antwort

33

Für API < 14, könnten Sie die Flagge WindowManager.LayoutParams.FLAG_BLUR_BEHIND verwenden, aber es ist veraltet und Einbau-Unschärfe nicht mehr auf dem höheren APIs unterstützt

jedoch Sie dies mit einer normalen Ansicht oder Overlay tun könnten. Was Sie tun möchten, ist:

  • eine Bitmap Erstellen von Ihrer Tätigkeit des Gesamt-Layout (see here for example)
  • Blur, das mit Bitmap Egal welche Methode Sie wollen (a few examples here)
  • Add (oder sichtbar machen) ein View in Ihrem Layout, das alles abdeckt. Set BKG verschwommen Bitmap
  • Öffnen Sie Ihren Dialog/transparent Aktivität
  • Wenn es geschlossen wird, entweder entfernen Sie die View oder setVisibility(GONE), wenn Sie es wieder verwenden werden.
+0

Danke, ich werde das jetzt versuchen! – rennoDeniro

+0

Hallo, die Unschärfe-Beispiele brauchen ein paar Sekunden, um zu verwischen, also verzögert sich das Öffnen der neuen Aktivität, Wie kann ich das umgehen? Wie ich möchte, dass es so schnell wie möglich verschwimmt und öffnet. – rennoDeniro

+0

Haben Sie die NDK-Version der angezeigten Antwort versucht? Der Autor hat eine 40fache Beschleunigung erhalten, die nativ wird. Könnte ein bisschen viel nur für eine Unschärfe sein, wenn Sie für alles andere pures Java sind, aber es ist einen Versuch wert. Eine andere Idee könnte sein, die Pixelschleifen durch Inkrementieren um jeweils 2 zu ändern. Es wird keine pixelgenaue Unschärfe sein, aber wenn Sie nur jedes zweite Pixel für x/y machen, sollte es nur 1/4 der Zeit dauern. Ich bin nicht sicher, wie es aussehen wird, aber es sollte nur ein paar Minuten dauern, um die Schleife zu ändern, um es herauszufinden. – Geobits

Verwandte Themen