Modify the UI of ClearCache dialog
- Change the icon
- Remove the icon on the second loading dialog
- Update the style of the progress bar
- Change the string of the button
- Change the color of the icon
- Remove the bold style for the app name in the message
- Add the delay to avoid the progress dialog is disappeared too fast
Test: manual, attach the video
Bug: 161754467
Change-Id: Ia0cdcdc2f6810d96cc9233f41d195115dfd8bb15
Merged-In: Ia0cdcdc2f6810d96cc9233f41d195115dfd8bb15
(cherry picked from commit 80116187d5e41ab71750465bbf24f086d15684e0)
diff --git a/res/drawable/ic_warning.xml b/res/drawable/ic_delete.xml
similarity index 82%
rename from res/drawable/ic_warning.xml
rename to res/drawable/ic_delete.xml
index 2163203..333cb63 100644
--- a/res/drawable/ic_warning.xml
+++ b/res/drawable/ic_delete.xml
@@ -20,6 +20,6 @@
android:viewportHeight="24"
android:viewportWidth="24">
<path
- android:fillColor="#1A73E8"
- android:pathData="M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z" />
+ android:fillColor="@color/clear_cache_icon_color"
+ android:pathData="M15 4V3H9v1H4v2h1v13c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V6h1V4h-5zm2 15H7V6h10v13zM9 8h2v9H9zm4 0h2v9h-2z" />
</vector>
\ No newline at end of file
diff --git a/res/layout/cache_clearing_dialog.xml b/res/layout/cache_clearing_dialog.xml
index 06f97b8..bf5a60b 100644
--- a/res/layout/cache_clearing_dialog.xml
+++ b/res/layout/cache_clearing_dialog.xml
@@ -20,15 +20,18 @@
android:theme="@style/CacheClearingAlertDialogTheme"
android:paddingStart="?android:attr/dialogPreferredPadding"
android:paddingEnd="?android:attr/dialogPreferredPadding"
+ android:paddingTop="@dimen/dialog_space"
+ android:paddingBottom="10dp"
android:orientation="vertical">
<ImageView
android:adjustViewBounds="true"
+ android:id="@+id/dialog_icon"
android:layout_gravity="bottom|center_horizontal"
android:layout_width="24dp"
android:layout_height="24dp"
- android:layout_marginTop="20dp"
+ android:layout_marginBottom="7dp"
android:scaleType="fitCenter"
- android:src="@drawable/ic_warning"
+ android:src="@drawable/ic_delete"
android:contentDescription="@null"/>
<TextView
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
index 56d8417..1478eb2 100644
--- a/res/values-night/colors.xml
+++ b/res/values-night/colors.xml
@@ -16,5 +16,6 @@
-->
<resources>
- <color name="thumb_gray_color">#3c4043</color>
+ <color name="thumb_gray_color">#3C4043</color>
+ <color name="clear_cache_icon_color">#DADCE0</color>
</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 28f31ee..ed0c6c2 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -15,5 +15,6 @@
-->
<resources>
- <color name="thumb_gray_color">#1f000000</color>
+ <color name="thumb_gray_color">#1F000000</color>
+ <color name="clear_cache_icon_color">#5F6368</color>
</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 840135e..c3bdf8f 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -18,4 +18,5 @@
<dimen name="permission_dialog_width">320dp</dimen>
<dimen name="permission_thumb_size">64dp</dimen>
<dimen name="permission_thumb_margin">6dp</dimen>
+ <dimen name="dialog_space">20dp</dimen>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 96c086d..d6171ca 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -62,7 +62,7 @@
</plurals>
<!-- Cache clearing permission dialog warning title. [CHAR LIMIT=NONE] -->
- <string name="cache_clearing_dialog_title">Clear temporary app files?</string>
+ <string name="cache_clearing_dialog_title">Clear temporary app files</string>
<!-- Cache clearing permission dialog warning text. [CHAR LIMIT=NONE] -->
<string name="cache_clearing_dialog_text"><xliff:g id="app_seeking_permission" example="File manager">%s</xliff:g> would like to clear some temporary files. This may result in an increased usage of battery or cellular data.</string>
@@ -70,6 +70,9 @@
<!-- Cache clearing in progress title. [CHAR LIMIT=NONE] -->
<string name="cache_clearing_in_progress_title">Clearing temporary app files\u2026</string>
+ <!-- Cache clearing permission dialog Clear button text. [CHAR LIMIT=30] -->
+ <string name="clear">Clear</string>
+
<!-- Allow dialog action text. [CHAR LIMIT=30] -->
<string name="allow">Allow</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 7097c8b..771da7c 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -41,6 +41,7 @@
<item name="android:layout_height">wrap_content</item>
<item name="android:gravity">center</item>
<item name="android:textSize">16sp</item>
+ <item name="android:textStyle">bold</item>
</style>
</resources>
diff --git a/src/com/android/providers/media/CacheClearingActivity.java b/src/com/android/providers/media/CacheClearingActivity.java
index d65a4a2..e3aff15 100644
--- a/src/com/android/providers/media/CacheClearingActivity.java
+++ b/src/com/android/providers/media/CacheClearingActivity.java
@@ -25,6 +25,7 @@
import android.graphics.Typeface;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.os.Handler;
import android.text.BidiFormatter;
import android.text.SpannableString;
import android.text.TextPaint;
@@ -43,6 +44,7 @@
private static final String TAG = "CacheClearingActivity";
private static final float MAX_APP_NAME_SIZE_PX = 500f;
private static final float TEXT_SIZE = 42f;
+ private static final Long LEAST_SHOW_PROGRESS_TIME_MS = 300L;
private AlertDialog mActionDialog;
private Dialog mLoadingDialog;
@@ -102,11 +104,14 @@
}
private class CacheClearingTask extends AsyncTask<Void, Void, Integer> {
+ private long mStartTime;
+
@Override
protected void onPreExecute() {
dismissDialogs(mActionDialog);
createLoadingDialog();
mLoadingDialog.show();
+ mStartTime = System.currentTimeMillis();
}
@Override
@@ -118,13 +123,25 @@
protected void onPostExecute(Integer result) {
// We take the convention of not using primitive wrapper pretty seriously
int status = result.intValue();
- dismissDialogs(mLoadingDialog);
+
if (result == 0) {
setResult(RESULT_OK);
} else {
setResult(status);
}
- finish();
+
+ // Don't dismiss the progress dialog too quick, it will cause bad UX.
+ final long duration = System.currentTimeMillis() - mStartTime;
+ if (duration > LEAST_SHOW_PROGRESS_TIME_MS) {
+ dismissDialogs(mLoadingDialog);
+ finish();
+ } else {
+ Handler handler = new Handler(getMainLooper());
+ handler.postDelayed(() -> {
+ dismissDialogs(mLoadingDialog);
+ finish();
+ }, LEAST_SHOW_PROGRESS_TIME_MS - duration);
+ }
}
}
@@ -132,12 +149,19 @@
final CharSequence dialogTitle = getString(R.string.cache_clearing_in_progress_title);
final View dialogTitleView = View.inflate(this, R.layout.cache_clearing_dialog, null);
final TextView titleText = dialogTitleView.findViewById(R.id.dialog_title);
+ final ProgressBar progressBar = new ProgressBar(CacheClearingActivity.this);
+ final int padding = getResources().getDimensionPixelOffset(R.dimen.dialog_space);
+
+ progressBar.setIndeterminate(true);
+ progressBar.setPadding(0, padding / 2, 0, padding);
titleText.setText(dialogTitle);
mLoadingDialog = new AlertDialog.Builder(this)
.setCustomTitle(dialogTitleView)
- .setView(new ProgressBar(CacheClearingActivity.this))
+ .setView(progressBar)
.setCancelable(false)
.create();
+
+ dialogTitleView.findViewById(R.id.dialog_icon).setVisibility(View.GONE);
mLoadingDialog.create();
setDialogOverlaySettings(mActionDialog);
}
@@ -149,16 +173,7 @@
final String unsanitizedAppName = TextUtils.ellipsize(appLabel,
paint, MAX_APP_NAME_SIZE_PX, TextUtils.TruncateAt.END).toString();
final String appName = BidiFormatter.getInstance().unicodeWrap(unsanitizedAppName);
-
final String actionText = getString(R.string.cache_clearing_dialog_text, appName);
- final SpannableString message = new SpannableString(actionText);
-
- int appNameIndex = actionText.indexOf(appName);
- if (appNameIndex >= 0) {
- message.setSpan(new StyleSpan(Typeface.BOLD),
- appNameIndex, appNameIndex + appName.length(), 0);
- }
-
final CharSequence dialogTitle = getString(R.string.cache_clearing_dialog_title);
final View dialogTitleView = View.inflate(this, R.layout.cache_clearing_dialog, null);
@@ -166,9 +181,9 @@
titleText.setText(dialogTitle);
mActionDialog = new AlertDialog.Builder(this)
.setCustomTitle(dialogTitleView)
- .setMessage(message)
- .setPositiveButton(R.string.allow, this)
- .setNegativeButton(R.string.deny, this)
+ .setMessage(actionText)
+ .setPositiveButton(R.string.clear, this)
+ .setNegativeButton(android.R.string.cancel, this)
.setCancelable(false)
.create();