主屏幕活动透明背景不是最后活动

时间:2011-06-03 14:45:44

标签: android android-activity

我正在从android.intent.action.CALL意图启动一个Activity。我希望显示一个类似于对话框的布局,其中包含透明背景的进度(当我在切换到本机拨号程序之前进行处理)。但是背后可见的背景应该是主屏幕。

此时活动加载正常,所需加载对话框外的背景是透明的,而不是后台的主屏幕显示最后一个应用程序屏幕/活动。

如何强制透明背后的背景成为主屏幕?

6 个答案:

答案 0 :(得分:8)

为了做到这一点,只需将清单文件中的android主题设置为'Theme.Wallpaper'

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

还要确保为活动设置透明背景。 例如,我定义了一种半透明的黑色,我将其用作活动的背景:

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

答案 1 :(得分: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);
        }
    }
  }
}

如上所述,应该避免这种情况。此类代码最好保留给任务管理器应用程序。

答案 2 :(得分: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
}

答案 3 :(得分:0)

首先,你不应该改变应用程序之外的活动堆栈,大不了。

其次,接收广播将导致其他应用程序在某些时间(前主屏幕除外)在前台运行。所以你必须接受这种情况。

您既可以显示对话框,也可以使用对话框主题进行背景活动,同时仍然会略微模糊,或者反过来只显示完整的活动。

答案 4 :(得分:0)

在清单中尝试launchMode =“singleInstance”;)

答案 5 :(得分:0)

以您的风格使用此主题

<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation</item>
</style>