私はかなり共通の要件があります。Androidのアクティビティ透明な背景
モバイルデバイスではフルスクリーン(標準サイズ)、タブレットデバイスではダイアログ(サイズが大きく、サイズがXLarge)のようなアクティビティがあります。
どちらの形式でも、Horizontal-ProgressBar、Load-IndicatorなどのCircular-ProgressBarなど、ActivityのコンテンツビューにUIウィジェットが表示されています。カスタムブランドの色など私はこの要件を忘れることはできません。
私は既定のAndroidテーマとスタイルに基づいてカスタムスタイルを定義し、すべてのアクティビティでそれらをアプリケーション全体で使用しています。以下はカスタムテーマです。私は唯一のタブレットデバイスのために上記に記載された特定の活動のためのアプリケーション、およびAppTheme.Dialog内のすべての活動全体のデフォルトのテーマとしてAppThemeを使用
<!-- 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>
。アクティビティは、タブレット画面の中央に配置されたフローティングダイアログウィンドウとして表示され、一般的なダイアログのように外部に触れたときにすべて消えますが、アクティビティのウィンドウ - 背景はピッチインキ - ブラックのようです。
私の要件は、Tabletデバイスのフローティングダイアログとしてのアクティビティには、前回のアクティビティウィンドウを示す透明な背景が必要であることです。
Theme.DialogやTheme.Translucentを使わずにこれを実現するには、以前の「AppTheme」スタイルから変更しないUIウィジェットのMaterial-Design仕様が必要です。
また、Activityクラスで宣言された多くのカスタムプライベートメソッドを再利用する必要があるため、Content-ViewレイアウトファイルをDialogインスタンスに読み込むことは特に確実ではありません。
ああ、btw、compileSdkVersionは最新24、minSdkVersionは16、targetSdkVersionは24です。buildToolsVersionも24.0.1で最新ですが、それはまったく別の問題です。
私が言及したように、私はダイアログインスタンスを使いたくありません。私は、アクティビティをLargeとXLarge Devicesの透明な背景浮動ウィンドウを持つDialogとして表示したいが、NormalとSmall Devicesのフルスクリーンウィンドウとしたい。また、タブレットデバイス固有のダイアログインスタンスを使用する場合、多くのクリック機能とユーザー対話をリファクタリングする必要があります。 – AndroidRocks