Активность прозрачный фон домашнего экрана не последняя активность - PullRequest
3 голосов
/ 03 июня 2011

Я запускаю Активность из намерения android.intent.action.CALL.Я хотел бы показать макет, похожий на диалог с прогрессом с прозрачным фоном (в то время как я делаю обработку перед передачей на родной номеронабиратель).Но за фоном, который виден, должен быть домашний экран.

В данный момент активность загружается нормально, и фон за пределами желаемого диалогового окна загрузки прозрачен, но вместо домашнего экрана в фоновом режиме отображается последний экран / действие приложения.

Как сделать фон за моим прозрачным экраном домашним экраном?

Ответы [ 5 ]

8 голосов
/ 29 ноября 2011

Для этого просто установите тему андроида в файле манифеста на «Theme.Wallpaper»

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

Также убедитесь, что вы установили прозрачный фон дляваша деятельность.Например, я определил полупрозрачный черный цвет, который я использую в качестве фона для своей деятельности:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="translucent_black">#CF000000</color>
</resources>
0 голосов
/ 09 июня 2011

попробуйте launchMode = "singleInstance" в вашем манифесте;)

0 голосов
/ 03 июня 2011

Вы не можете заставить его быть домашним экраном, но вы можете взять текущие обои и использовать их в качестве фона.

@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 голосов
/ 03 июня 2011

Во-первых, вы не должны изменять стек активности за пределами вашего приложения, большой номер нет.

Во-вторых, получение трансляции приведет к тому, что другие приложения будут выполняться на переднем плане иногда (кроме домашнегоэкран).Поэтому вам просто нужно принять это.

Вы можете либо отобразить диалоговое окно и использовать тему диалога, чтобы фоновая активность была слегка скрыта, либо пойти другим путем и простопоказать полную активность.

0 голосов
/ 03 июня 2011

Один из вариантов (который настоятельно не рекомендуется) - убить все остальные видимые процессы.Этот код позаботится об этом:

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

Как указано выше, этого следует избегать.Этот тип кода лучше всего резервировать для приложения диспетчера задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...