Как создать всегда-верхнее полноэкранное оверлейное действие в Android

Я хотел бы иметь возможность создать действие, которое всегда находится на переднем плане экрана Android. Он не должен получать никаких входных данных, просто передайте их любому приложению, расположенному ниже него. Что-то вроде HUD'а.

Мне удалось выяснить, что мне нужно установить базовый тип окна на TYPE_SYSTEM_ALERT, но похоже, что Android игнорирует мой код -никаких исключений не возникает, даже если я удаляю android.permission.SYSTEM _ALERT_Разрешение WINDOW из манифеста. (необходимо использовать этот тип окна). Когда я попытался использовать тип ALERT в диалоговом окне, он работал нормально, но я не могу превратить диалог в полноэкранный прозрачный объект. Вот мой код, возможно, чего-то не хватает.

public void onCreate(Bundle savedInstanceState) {       
     super.onCreate(savedInstanceState);        

     requestWindowFeature(Window.FEATURE_NO_TITLE);
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
     getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);             
     getWindow().setBackgroundDrawableResource(android.R.color.transparent);
     getWindow().setFormat(PixelFormat.TRANSLUCENT);
     setContentView(R.layout.main);
}

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

 <item name="android:windowIsTranslucent">true</item>
21
задан tmouse 10 April 2012 в 19:43
поделиться