Как создать наверху полноэкранную оверлейную активность в Android
Я хотел бы иметь возможность создавать активность, которая всегда находится перед дисплеем Android. Он не должен получать никаких входных данных, просто передайте его любому приложению, которое находится под ним. Что-то вроде HUD.
Мне удалось выяснить, что мне нужно установить базовый тип окна в TYPE_SYSTEM_ALERT, но похоже, что Android игнорирует мой код - исключение не выдается, даже если я удалю разрешение android.permission.SYSTEM_ALERT_WINDOW из манифеста. (требуется использовать этот тип окна). Когда я попытался использовать тип ALERT в диалоге, он работал нормально, но я не могу сделать диалог полностью прозрачным объектом. Вот мой код, может быть, чего-то не хватает простого.
<code>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); } </code>
Настройка прозрачности должна быть включена извне в xml-манифесте, в противном случае она также не будет работать.
<code> <item name="android:windowIsTranslucent">true</item> </code>