3 Stimmen

Transparenter Hintergrund des Startbildschirms nicht letzte Aktivität

Ich starte eine Aktivität aus dem Android.intent.action.CALL intent. Ich möchte ein Layout ähnlich wie Dialog mit Fortschritt mit transparentem Hintergrund zeigen (während ich tun Verarbeitung vor der Übergabe an native Dialer). Aber hinter dem Hintergrund, der sichtbar ist, sollte der Startbildschirm sein.

Im Moment ist das Laden der Aktivität in Ordnung und der Hintergrund außerhalb des gewünschten Ladedialogs ist transparent, aber anstelle des Startbildschirms im Hintergrund wird der letzte Anwendungsbildschirm/die letzte Aktivität angezeigt.

Wie kann ich erzwingen, dass der Hintergrund hinter meinem transparenten Bildschirm der Startbildschirm ist?

9voto

Setzen Sie dazu einfach das Android-Theme in Ihrer Manifestdatei auf 'Theme.Wallpaper'.

d.h: <activity android:theme="@android:style/Theme.Wallpaper" />

Stellen Sie außerdem sicher, dass Sie einen transparenten Hintergrund für Ihre Aktivität einstellen. Ich habe zum Beispiel eine durchsichtige schwarze Farbe definiert, die ich als Hintergrund für meine Aktivität verwende:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="translucent_black">#CF000000</color>
</resources>

0voto

Phil Punkte 35009

Eine Möglichkeit (die allerdings nicht zu empfehlen ist) besteht darin, alle anderen sichtbaren Prozesse zu beenden. Dieser Code wird sich darum kümmern:

import java.util.List;

import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.content.Context;
import android.util.Log;

public class Test {
public Test(Context c){
    ActivityManager am = (ActivityManager)c.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningAppProcessInfo> list = am.getRunningAppProcesses();
    for (int i=0; i<list.size(); i++){
        Log.i("apps info", list.get(i).processName +"; PID=" + list.get(i).pid);
        if(list.get(i).importance == RunningAppProcessInfo.IMPORTANCE_VISIBLE){
            android.os.Process.killProcess(list.get(i).pid);
        }
    }
  }
}

Wie oben erwähnt, sollte dies vermieden werden. Diese Art von Code ist am besten für eine Task-Manager-App reserviert.

0voto

CaseyB Punkte 24477

Sie können nicht erzwingen, dass es der Startbildschirm wird, aber Sie können das aktuelle Hintergrundbild als Hintergrund verwenden.

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    Drawable wallpaper = WallpaperManager.getInstance(this).getDrawable();
    // Set wallpaper to the background of the root view
}

0voto

Matt Gaunt Punkte 8954

Erstens sollten Sie den Aktivitätsstapel nicht außerhalb Ihrer Anwendung ändern, das ist ein absolutes No-No.

Zweitens führt der Empfang einer Sendung dazu, dass zeitweise andere Anwendungen im Vordergrund ausgeführt werden (außer dem Startbildschirm). Sie müssen also akzeptieren, dass dies der Fall sein wird.

Sie können entweder ein Dialogfeld anzeigen und das Dialogfeldthema verwenden, so dass die Hintergrundaktivität zwar immer noch vorhanden ist, aber leicht verdeckt wird, oder Sie gehen den umgekehrten Weg und zeigen einfach eine vollständige Aktivität an.

0voto

Dori Punkte 17912

Versuchen Sie launchMode="singleInstance" in Ihrem Manifest ;)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X