diff options
author | Babak Bostan <babakbo@google.com> | 2023-07-07 16:52:44 -0700 |
---|---|---|
committer | Babak Bostan <babakbo@google.com> | 2023-07-07 16:56:53 -0700 |
commit | 4af770c330e547832007b0b7d68a6b8b2de79318 (patch) | |
tree | 1fea31c5e810c147fe2e797ef29a7d68d3ced4ac | |
parent | a8c47c4c48c576d9036d21d445fc4bf24d34ffa1 (diff) | |
download | systemlibs-4af770c330e547832007b0b7d68a6b8b2de79318.tar.gz |
Make car-qc-lib responsive to ui config changes
- Updated the QCViewUtils to read the resources when needed. The
previous implementation which would cache them at the util class
creation time would prevent the ui elements to properly reflect the
resources after the ui config changes.
- Changed `android:textAppearance` to `style` since RRO does not
peroperly work on textAppearance.
Bug: 290413703
Test: Manual
Change-Id: I508cf7c0c772f6260a7c40a04ef2ebf7271dcbc7
-rw-r--r-- | car-qc-lib/res/layout/qc_row_view.xml | 4 | ||||
-rw-r--r-- | car-qc-lib/res/layout/qc_tile_view.xml | 2 | ||||
-rw-r--r-- | car-qc-lib/src/com/android/car/qc/view/QCRowView.java | 3 | ||||
-rw-r--r-- | car-qc-lib/src/com/android/car/qc/view/QCTileView.java | 3 | ||||
-rw-r--r-- | car-qc-lib/src/com/android/car/qc/view/QCViewUtils.java | 59 |
5 files changed, 24 insertions, 47 deletions
diff --git a/car-qc-lib/res/layout/qc_row_view.xml b/car-qc-lib/res/layout/qc_row_view.xml index a4af032..9976ac6 100644 --- a/car-qc-lib/res/layout/qc_row_view.xml +++ b/car-qc-lib/res/layout/qc_row_view.xml @@ -77,7 +77,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:singleLine="true" - android:textAppearance="@style/TextAppearance.QC.Title" + style="@style/TextAppearance.QC.Title" app:layout_constraintStart_toEndOf="@+id/barrier1" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@+id/qc_summary" @@ -89,7 +89,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_centerVertical="true" - android:textAppearance="@style/TextAppearance.QC.Subtitle" + style="@style/TextAppearance.QC.Subtitle" app:layout_constraintStart_toEndOf="@+id/barrier1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/qc_title" diff --git a/car-qc-lib/res/layout/qc_tile_view.xml b/car-qc-lib/res/layout/qc_tile_view.xml index 7fb0884..c7b7511 100644 --- a/car-qc-lib/res/layout/qc_tile_view.xml +++ b/car-qc-lib/res/layout/qc_tile_view.xml @@ -37,5 +37,5 @@ android:id="@android:id/summary" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textAppearance="@style/TextAppearance.QC.Subtitle"/> + style="@style/TextAppearance.QC.Subtitle"/> </com.android.car.ui.uxr.DrawableStateLinearLayout>
\ No newline at end of file diff --git a/car-qc-lib/src/com/android/car/qc/view/QCRowView.java b/car-qc-lib/src/com/android/car/qc/view/QCRowView.java index 2b6b7a5..490615c 100644 --- a/car-qc-lib/src/com/android/car/qc/view/QCRowView.java +++ b/car-qc-lib/src/com/android/car/qc/view/QCRowView.java @@ -346,8 +346,7 @@ public class QCRowView extends FrameLayout { toggleButton.setTextOn(null); toggleButton.setTextOff(null); toggleButton.setOnCheckedChangeListener(null); - Drawable icon = QCViewUtils.getInstance(mContext).getToggleIcon( - action.getIcon(), action.isAvailable()); + Drawable icon = QCViewUtils.getToggleIcon(mContext, action.getIcon(), action.isAvailable()); toggleButton.setContentDescription(action.getContentDescription()); toggleButton.setButtonDrawable(icon); toggleButton.setChecked(action.isChecked()); diff --git a/car-qc-lib/src/com/android/car/qc/view/QCTileView.java b/car-qc-lib/src/com/android/car/qc/view/QCTileView.java index 33c0eff..4173e25 100644 --- a/car-qc-lib/src/com/android/car/qc/view/QCTileView.java +++ b/car-qc-lib/src/com/android/car/qc/view/QCTileView.java @@ -125,8 +125,7 @@ public class QCTileView extends FrameLayout implements Observer<QCItem> { } mToggleButton.toggle(); }); - Drawable icon = QCViewUtils.getInstance(mContext).getToggleIcon( - qcTile.getIcon(), qcTile.isAvailable()); + Drawable icon = QCViewUtils.getToggleIcon(mContext, qcTile.getIcon(), qcTile.isAvailable()); mToggleButton.setButtonDrawable(icon); mToggleButton.setOnCheckedChangeListener( (buttonView, isChecked) -> { diff --git a/car-qc-lib/src/com/android/car/qc/view/QCViewUtils.java b/car-qc-lib/src/com/android/car/qc/view/QCViewUtils.java index 366c724..ca0f877 100644 --- a/car-qc-lib/src/com/android/car/qc/view/QCViewUtils.java +++ b/car-qc-lib/src/com/android/car/qc/view/QCViewUtils.java @@ -16,7 +16,6 @@ package com.android.car.qc.view; -import android.annotation.ColorInt; import android.content.Context; import android.content.res.ColorStateList; import android.graphics.drawable.Drawable; @@ -32,64 +31,44 @@ import com.android.car.qc.R; * Utility class used by {@link QCTileView} and {@link QCRowView} */ public class QCViewUtils { - private static QCViewUtils sInstance; - - private final Context mContext; - private final Drawable mDefaultToggleBackground; - private final Drawable mUnavailableToggleBackground; - private final ColorStateList mDefaultToggleIconTint; - @ColorInt - private final int mUnavailableToggleIconTint; - private final int mToggleForegroundIconInset; - - private QCViewUtils(@NonNull Context context) { - mContext = context.getApplicationContext(); - mDefaultToggleBackground = mContext.getDrawable(R.drawable.qc_toggle_background); - mUnavailableToggleBackground = mContext.getDrawable( - R.drawable.qc_toggle_unavailable_background); - mDefaultToggleIconTint = mContext.getColorStateList(R.color.qc_toggle_icon_fill_color); - mUnavailableToggleIconTint = mContext.getColor(R.color.qc_toggle_unavailable_color); - mToggleForegroundIconInset = mContext.getResources() - .getDimensionPixelSize(R.dimen.qc_toggle_foreground_icon_inset); - } - - /** - * Get an instance of {@link QCViewUtils} - */ - public static QCViewUtils getInstance(@NonNull Context context) { - if (sInstance == null) { - sInstance = new QCViewUtils(context); - } - return sInstance; - } /** * Create a return a Quick Control toggle icon - used for tiles and action toggles. */ - public Drawable getToggleIcon(@Nullable Icon icon, boolean available) { + public static Drawable getToggleIcon(@NonNull Context context, @Nullable Icon icon, + boolean available) { + Drawable defaultToggleBackground = context.getDrawable(R.drawable.qc_toggle_background); + Drawable unavailableToggleBackground = context.getDrawable( + R.drawable.qc_toggle_unavailable_background); + int toggleForegroundIconInset = context.getResources() + .getDimensionPixelSize(R.dimen.qc_toggle_foreground_icon_inset); + Drawable background = available - ? mDefaultToggleBackground.getConstantState().newDrawable().mutate() - : mUnavailableToggleBackground.getConstantState().newDrawable().mutate(); + ? defaultToggleBackground.getConstantState().newDrawable().mutate() + : unavailableToggleBackground.getConstantState().newDrawable().mutate(); if (icon == null) { return background; } - Drawable iconDrawable = icon.loadDrawable(mContext); + Drawable iconDrawable = icon.loadDrawable(context); if (iconDrawable == null) { return background; } if (!available) { - iconDrawable.setTint(mUnavailableToggleIconTint); + int unavailableToggleIconTint = context.getColor(R.color.qc_toggle_unavailable_color); + iconDrawable.setTint(unavailableToggleIconTint); } else { - iconDrawable.setTintList(mDefaultToggleIconTint); + ColorStateList defaultToggleIconTint = context.getColorStateList( + R.color.qc_toggle_icon_fill_color); + iconDrawable.setTintList(defaultToggleIconTint); } Drawable[] layers = {background, iconDrawable}; LayerDrawable drawable = new LayerDrawable(layers); - drawable.setLayerInsetRelative(/* index= */ 1, mToggleForegroundIconInset, - mToggleForegroundIconInset, mToggleForegroundIconInset, - mToggleForegroundIconInset); + drawable.setLayerInsetRelative(/* index= */ 1, toggleForegroundIconInset, + toggleForegroundIconInset, toggleForegroundIconInset, + toggleForegroundIconInset); return drawable; } } |