diff options
author | 2025-03-14 02:48:16 +0000 | |
---|---|---|
committer | 2025-03-14 02:48:21 +0000 | |
commit | 308983f4d97281a8aafae960582b1e096ffed4a8 (patch) | |
tree | e0a5fe6b605e2a41e55e0217948c8f588b621186 | |
parent | 2911651fd7326f4d785282fbbc69debb63974409 (diff) |
[Expressive Design] Support Loading_Indeterminate status for StatusBannerPreference
Bug: 367536673
Test: manual
Flag: com.android.settingslib.widget.theme.flags.is_expressive_design_enabled
Change-Id: Ic25e4c0b74c10ddd7b5d0cae0d3d3a47c11fb40c
3 files changed, 24 insertions, 3 deletions
diff --git a/packages/SettingsLib/StatusBannerPreference/res/layout/settingslib_expressive_preference_statusbanner.xml b/packages/SettingsLib/StatusBannerPreference/res/layout/settingslib_expressive_preference_statusbanner.xml index e307d8b8ccbd..c778fb03e04f 100644 --- a/packages/SettingsLib/StatusBannerPreference/res/layout/settingslib_expressive_preference_statusbanner.xml +++ b/packages/SettingsLib/StatusBannerPreference/res/layout/settingslib_expressive_preference_statusbanner.xml @@ -67,6 +67,15 @@ android:progress="0" android:visibility="gone" /> + <com.google.android.material.loadingindicator.LoadingIndicator + android:id="@+id/loading_indicator" + style="@style/Widget.Material3.LoadingIndicator" + android:layout_width="@dimen/settingslib_expressive_space_medium4" + android:layout_height="@dimen/settingslib_expressive_space_medium4" + android:layout_gravity="center" + android:scaleType="centerInside" + android:visibility="gone" /> + </FrameLayout> <LinearLayout diff --git a/packages/SettingsLib/StatusBannerPreference/res/values/attrs.xml b/packages/SettingsLib/StatusBannerPreference/res/values/attrs.xml index 2cb39a20d071..bb9a5ad689cd 100644 --- a/packages/SettingsLib/StatusBannerPreference/res/values/attrs.xml +++ b/packages/SettingsLib/StatusBannerPreference/res/values/attrs.xml @@ -23,6 +23,7 @@ <enum name="high" value="3"/> <enum name="off" value="4"/> <enum name="loading_determinate" value="5"/> + <enum name="loading_indeterminate" value="6"/> </attr> <attr name="buttonLevel" format="enum"> <enum name="generic" value="0"/> diff --git a/packages/SettingsLib/StatusBannerPreference/src/com/android/settingslib/widget/StatusBannerPreference.kt b/packages/SettingsLib/StatusBannerPreference/src/com/android/settingslib/widget/StatusBannerPreference.kt index 274e1779fdca..e6c6638f7de4 100644 --- a/packages/SettingsLib/StatusBannerPreference/src/com/android/settingslib/widget/StatusBannerPreference.kt +++ b/packages/SettingsLib/StatusBannerPreference/src/com/android/settingslib/widget/StatusBannerPreference.kt @@ -43,7 +43,8 @@ class StatusBannerPreference @JvmOverloads constructor( MEDIUM, HIGH, OFF, - LOADING_DETERMINATE // The loading progress is set by the caller. + LOADING_DETERMINATE, // The loading progress is set by the caller. + LOADING_INDETERMINATE // No loading progress. Just loading animation } var iconLevel: BannerStatus = BannerStatus.GENERIC set(value) { @@ -94,6 +95,7 @@ class StatusBannerPreference @JvmOverloads constructor( 3 -> BannerStatus.HIGH 4 -> BannerStatus.OFF 5 -> BannerStatus.LOADING_DETERMINATE + 6 -> BannerStatus.LOADING_INDETERMINATE else -> BannerStatus.GENERIC } @@ -109,7 +111,8 @@ class StatusBannerPreference @JvmOverloads constructor( holder.findViewById(android.R.id.icon_frame)?.apply { visibility = if ( - icon != null || iconLevel == BannerStatus.LOADING_DETERMINATE + icon != null || iconLevel == BannerStatus.LOADING_DETERMINATE || + iconLevel == BannerStatus.LOADING_INDETERMINATE ) View.VISIBLE else View.GONE @@ -117,7 +120,8 @@ class StatusBannerPreference @JvmOverloads constructor( holder.findViewById(android.R.id.icon)?.apply { visibility = - if (iconLevel == BannerStatus.LOADING_DETERMINATE) + if (iconLevel == BannerStatus.LOADING_DETERMINATE || + iconLevel == BannerStatus.LOADING_INDETERMINATE) View.GONE else View.VISIBLE } @@ -132,6 +136,13 @@ class StatusBannerPreference @JvmOverloads constructor( else View.GONE } + holder.findViewById(R.id.loading_indicator)?.apply { + visibility = + if (iconLevel == BannerStatus.LOADING_INDETERMINATE) + View.VISIBLE + else View.GONE + } + (holder.findViewById(R.id.status_banner_button) as? MaterialButton)?.apply { setBackgroundColor( if (buttonLevel == BannerStatus.OFF) getBackgroundColor(BannerStatus.GENERIC) |