Задний план
Я пытаюсь поместить слой поверх текущей активности, который будет иметь объяснение того, что происходит на текущем экране, аналогично тому, что происходит на приложение contact+ .
Я знаю, что для этого есть несколько решений (например, библиотека showCase и библиотеку superToolTips), и я также знаю, что я могу создать представление и установить его поверх, добавив его в окно действия, но мне нужно поместить весь слой диалога сверху.
Проблема
Что бы я ни пробовал, каждое решение не работает так, как мне нужно.
короче, что мне нужно:
полноэкранный диалог.
никаких изменений (не визуальных и не логических) в панели действий, панели уведомлений и содержимом действия позади, что означает, что все, что находится за диалоговым окном, остается прежним, оно было показано за мгновение до отображения диалогового окна.
быть прозрачным, за исключением видов, которые я использую для диалога, который должен отображаться нормально.
что я пробовал
К сожалению, у меня всегда есть только часть того, что мне нужно.
вот мой код:
стили.xml:
<style name="full_screen_dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
</style>
Основная активность.java:
...
final Dialog dialog = new Dialog(this, R.style.full_screen_dialog);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.floating_tutorial);
dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
dialog.getWindow().setFormat(PixelFormat.TRANSLUCENT);
dialog.show();
Этот код поместит макет поверх активности, но, к сожалению, у него нет прозрачности, хотя я ее установил. Макет, который я использовал, очень прост, поэтому я не публикую его.
Вопрос
что мне не хватает? что нужно сделать, чтобы исправить код?
как я могу сделать диалог прозрачным, полноэкранным и чтобы он не менял панель действий и панель уведомлений.
Рабочий раствор
РЕДАКТИРОВАТЬ: после нахождения хорошего решения вот рабочий код:
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.floating_tutorial);
final Window window = dialog.getWindow();
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}