У меня довольно распространенное требование.Активность Android прозрачный
У меня есть активность, которая должна отображаться на экране в полноэкранном режиме на мобильных устройствах (размер-нормальный) и в виде диалогового окна на планшетных устройствах (размер-большой и размер-большой).
В обоих форматах у меня есть UI-виджеты, отображаемые в виде содержимого Activity, например Horizontal-ProgressBar, Circular-ProgressBar в качестве индикатора нагрузки и т. Д., Которые должны следовать согласованному Material-Design с Custom-Branded colors и т. Д. Я не могу отказаться от этого требования.
Я определил пользовательские стили на основе стандартных тем и стилей Android и использую их в приложении для всех видов деятельности. Ниже приведены пользовательские темы.
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:colorPrimary" tools:ignore="NewApi">
@color/light_black
</item>
<item name="colorPrimary">@color/light_black</item>
<item name="android:colorAccent" tools:ignore="NewApi">@color/sapphire</item>
<item name="colorAccent">@color/sapphire</item>
<item name="android:colorBackground">@color/primary_background</item>
<item name="android:textColorPrimary">@color/title_color</item>
<item name="android:colorButtonNormal" tools:ignore="NewApi">@color/sapphire</item>
<item name="colorButtonNormal">@color/sapphire</item>
<item name="android:colorForeground" tools:ignore="NewApi">
@color/title_color
</item>
<item name="android:titleTextStyle">@style/toolbar_title</item>
<item name="android:navigationIcon" tools:ignore="NewApi">?android:attr/homeAsUpIndicator</item>
<item name="navigationIcon">?android:attr/homeAsUpIndicator</item>
<item name="android:colorControlNormal" tools:ignore="NewApi">@color/white</item>
<item name="colorControlNormal">@color/white</item>
</style>
<style name="AppTheme.Light" parent="AppTheme">
<item name="android:windowBackground">@color/white</item>
</style>
<style name="AppTheme.Dialog" parent="AppTheme.Light">
<item name="android:windowBackgroundFallback" tools:ignore="NewApi">
@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundFloating" tools:ignore="NewApi">
@android:color/transparent</item>
<item name="windowActionBar">false</item>
<item name="windowActionBarOverlay">false</item>
<item name="windowActionModeOverlay">false</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowClipToOutline" tools:ignore="NewApi">false</item>
<item name="android:windowTitleStyle">@null</item>
<item name="android:windowTitleBackgroundStyle">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowCloseOnTouchOutside">true</item>
<item name="android:windowEnableSplitTouch">true</item>
<item name="android:fitsSystemWindows">true</item>
<item name="android:fillViewport">true</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:backgroundDimAmount">0.2</item>
</style>
Я использую AppTheme в качестве темы по умолчанию во всех деятельности в App и AppTheme.Dialog для конкретной деятельности, описанной выше, только для планшетных устройств. Действие действительно отображается как окно с плавающей запятой, расположенное в центре экрана планшета, при отключении, как обычный диалог, отключается, все хорошо, но проблема заключается в том, что оконный фон Activity похож на черно-черный.
Мое требование состоит в том, что активность как плавающий-диалог в планшетных устройствах должна иметь Прозрачный фон, демонстрирующий предыдущее содержимое окна активности, возможно, затемненное и затемненное.
Как достичь этого, не используя тему.Dialog или Theme.Translucent, как я уже говорил, мне нужны спецификации Material-Design для UI-Widgets, которые не должны меняться от оригинального стиля «AppTheme».
Мне также нужно будет повторно использовать множество индивидуальных частных методов, объявленных в классе Activity, поэтому загрузка макета-файла содержимого в экземпляр Dialog определенно не является предпочтительной.
О, btw, compileSdkVersion является последним в 24, minSdkVersion - 16, а targetSdkVersion - 24, buildToolsVersion также является последним в 24.0.1, но это совсем другое дело.
Как я уже говорил, я не хочу использовать диалоговые экземпляры. Я хочу, чтобы Activity отображалась как диалоговое окно с прозрачным фоновым плавающим окном в устройствах Large и XLarge, но в качестве полноэкранного окна в Normal и Small Devices. Кроме того, необходимо будет реорганизовать много функций щелчка и взаимодействия с пользователем, если я начну использовать экземпляр диалога, специфичный для планшетных устройств. – AndroidRocks