2011-06-03 68 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