2011-06-03 200 views
2

我從android.intent.action.CALL意圖啓動一個活動。我想展示一個類似於帶有透明背景的對話框的佈局(雖然在交給本地撥號程序之前我做了處理)。但背後可見的背景應該是主屏幕。活動主屏幕的透明背景不是最後的活動

目前活動加載正常,並且所需加載對話框外的背景是透明的,但不顯示後臺主屏幕中顯示的最後一個應用程序屏幕/活動。

我該如何強制透明背後的背景成爲主屏幕?

回答

0

嘗試在你的清單launchMode = 「singleInstance」)

0

一個選項(非常不推薦)是殺死所有其他可見進程。此代碼將處理它:

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); 
     } 
    } 
    } 
} 

如上所述,這應該避免。這種類型的代碼最好爲任務管理器應用程序保留。

+1

殺害所有其他過程簡單,化妝品的原因是一個壞主意。 – CaseyB 2011-06-03 15:19:36

+1

他正在尋求解決方案。這不一定是最好的,但它可以幫助他朝正確的方向發展。僅僅因爲你不同意這種迴應並不意味着這是一個糟糕的迴應,特別是當我提供工作代碼時。 – Phil 2011-06-03 15:41:24

0

你不能強制它成爲主屏幕,但你可以抓住當前的壁紙,並使用它作爲你的背景。

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

偉大的思想,那是我剛剛嘗試的工作。 – scottyab 2011-06-03 15:26:31

+0

不幸的是,如果設備使用的是Live Wallpaper,則會顯示默認設置。 – scottyab 2011-06-03 16:01:30

+0

嗯,那很糟糕。看來,動態壁紙作爲服務運行。您可能能夠綁定到當前的服務。 http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html – CaseyB 2011-06-03 16:11:42

0

首先你不應該改變你的應用程序之外的活動堆棧,不可以不可以。其次,接收廣播將導致其他應用程序在某些時間(主屏幕除外)在前臺運行。所以你不得不接受這種情況。

您可以顯示一個對話框並使用對話框主題,以便在後臺活動稍微模糊的情況下,或者以其他方式顯示完整活動。

8

爲了在您的清單文件以 'Theme.Wallpaper'

即這樣做,只是設置了android主題:<activity android:theme="@android:style/Theme.Wallpaper" />

另外請確保你爲你的活動設置了透明背景。 例如,我已經定義了一個半透明的黑色,我作爲背景使用我的活動:

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

briliant,完美的作品。我做的唯一的改變是使用android:background =「@ android:color/transparent」作爲活動的佈局以及清單中的主題添加 – Prachur 2012-10-02 14:00:00