diff --git a/packages/DocumentsUI/res/color/item_root_icon.xml b/packages/DocumentsUI/res/color/item_root_icon.xml new file mode 100644 index 0000000000000..1374e6195f83d --- /dev/null +++ b/packages/DocumentsUI/res/color/item_root_icon.xml @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/packages/DocumentsUI/res/color/item_root_primary_text.xml b/packages/DocumentsUI/res/color/item_root_primary_text.xml new file mode 100644 index 0000000000000..4ac6916fc067c --- /dev/null +++ b/packages/DocumentsUI/res/color/item_root_primary_text.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_grid_selection_check.png b/packages/DocumentsUI/res/drawable-hdpi/ic_grid_selection_check.png new file mode 100644 index 0000000000000..f3007c288b387 Binary files /dev/null and b/packages/DocumentsUI/res/drawable-hdpi/ic_grid_selection_check.png differ diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_grid_selection_check.png b/packages/DocumentsUI/res/drawable-mdpi/ic_grid_selection_check.png new file mode 100644 index 0000000000000..16f2ab9a5f06a Binary files /dev/null and b/packages/DocumentsUI/res/drawable-mdpi/ic_grid_selection_check.png differ diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_grid_selection_check.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_grid_selection_check.png new file mode 100644 index 0000000000000..08853207e8757 Binary files /dev/null and b/packages/DocumentsUI/res/drawable-xhdpi/ic_grid_selection_check.png differ diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_grid_selection_check.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_grid_selection_check.png new file mode 100644 index 0000000000000..083bbcc3751b8 Binary files /dev/null and b/packages/DocumentsUI/res/drawable-xxhdpi/ic_grid_selection_check.png differ diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_grid_selection_check.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_grid_selection_check.png new file mode 100644 index 0000000000000..74b1ca517a94c Binary files /dev/null and b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_grid_selection_check.png differ diff --git a/packages/DocumentsUI/res/drawable/item_doc_grid_overlay.xml b/packages/DocumentsUI/res/drawable/item_doc_grid_overlay.xml new file mode 100644 index 0000000000000..3fbd25eaa355b --- /dev/null +++ b/packages/DocumentsUI/res/drawable/item_doc_grid_overlay.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/packages/DocumentsUI/res/drawable/grid_protect_background.xml b/packages/DocumentsUI/res/drawable/item_doc_grid_overlay_icon.xml similarity index 68% rename from packages/DocumentsUI/res/drawable/grid_protect_background.xml rename to packages/DocumentsUI/res/drawable/item_doc_grid_overlay_icon.xml index 2e7aadd9579a2..d40de1e1512d0 100644 --- a/packages/DocumentsUI/res/drawable/grid_protect_background.xml +++ b/packages/DocumentsUI/res/drawable/item_doc_grid_overlay_icon.xml @@ -14,11 +14,8 @@ limitations under the License. --> - - - - - - - + + + + diff --git a/packages/DocumentsUI/res/drawable/item_activated_overlay.xml b/packages/DocumentsUI/res/drawable/item_doc_list_background.xml similarity index 85% rename from packages/DocumentsUI/res/drawable/item_activated_overlay.xml rename to packages/DocumentsUI/res/drawable/item_doc_list_background.xml index 83e4d7e75356d..b87954226934d 100644 --- a/packages/DocumentsUI/res/drawable/item_activated_overlay.xml +++ b/packages/DocumentsUI/res/drawable/item_doc_list_background.xml @@ -15,11 +15,7 @@ --> - - - - - - + + diff --git a/packages/DocumentsUI/res/drawable/item_activated.xml b/packages/DocumentsUI/res/drawable/item_root_background.xml similarity index 100% rename from packages/DocumentsUI/res/drawable/item_activated.xml rename to packages/DocumentsUI/res/drawable/item_root_background.xml diff --git a/packages/DocumentsUI/res/layout-sw720dp-land/item_doc_list.xml b/packages/DocumentsUI/res/layout-sw720dp-land/item_doc_list.xml index 95af7e966989a..d1243200dd5d2 100644 --- a/packages/DocumentsUI/res/layout-sw720dp-land/item_doc_list.xml +++ b/packages/DocumentsUI/res/layout-sw720dp-land/item_doc_list.xml @@ -17,7 +17,7 @@ + android:background="@drawable/item_doc_list_background"> + android:background="@color/item_doc_grid_background"> + android:textColor="@*android:color/primary_text_default_material_dark" /> + android:textColor="@*android:color/primary_text_default_material_dark" /> + android:textColor="@*android:color/primary_text_default_material_dark" /> + + + + diff --git a/packages/DocumentsUI/res/layout/item_doc_list.xml b/packages/DocumentsUI/res/layout/item_doc_list.xml index c5f1842294f27..c576669d8958f 100644 --- a/packages/DocumentsUI/res/layout/item_doc_list.xml +++ b/packages/DocumentsUI/res/layout/item_doc_list.xml @@ -17,7 +17,7 @@ + android:background="@drawable/item_doc_list_background"> + android:background="@drawable/item_root_background"> + android:layout_marginEnd="16dp" + android:duplicateParentState="true"> + android:contentDescription="@null" + android:duplicateParentState="true" /> @@ -54,7 +56,7 @@ android:ellipsize="end" android:textAlignment="viewStart" android:textAppearance="@android:style/TextAppearance.Material.Body1" - android:textColor="?android:attr/textColorPrimary" /> + android:textColor="@color/item_root_primary_text" /> + android:textColor="@color/item_root_primary_text" /> diff --git a/packages/DocumentsUI/res/values/colors.xml b/packages/DocumentsUI/res/values/colors.xml index 7442b09c5fe2a..2ceb9682fa1b5 100644 --- a/packages/DocumentsUI/res/values/colors.xml +++ b/packages/DocumentsUI/res/values/colors.xml @@ -18,8 +18,16 @@ #fffafafa #ffeeeeee - - #8800bcd4 + @color/material_grey_300 + + #88000000 + + #88000000 + #88ffffff + + #88ffffff + + + #1a009688 - @color/material_grey_300 diff --git a/packages/DocumentsUI/res/values/styles.xml b/packages/DocumentsUI/res/values/styles.xml index 5cfe046bd4632..7693da398747e 100644 --- a/packages/DocumentsUI/res/values/styles.xml +++ b/packages/DocumentsUI/res/values/styles.xml @@ -28,6 +28,7 @@ @*android:color/material_deep_teal_500 false + true true @null diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java index caa07ab5bddfe..39c2252799d3f 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java @@ -807,6 +807,9 @@ public class DirectoryFragment extends Fragment { || MimePredicate.mimeMatches(MimePredicate.VISUAL_MIMES, docMimeType); final boolean showThumbnail = supportsThumbnail && allowThumbnail && !mSvelteRecents; + final boolean enabled = isDocumentEnabled(docMimeType, docFlags); + final float iconAlpha = (state.derivedMode == MODE_LIST && !enabled) ? 0.5f : 1f; + boolean cacheHit = false; if (showThumbnail) { final Uri uri = DocumentsContract.buildDocumentUri(docAuthority, docId); @@ -817,7 +820,7 @@ public class DirectoryFragment extends Fragment { } else { iconThumb.setImageDrawable(null); final ThumbnailAsyncTask task = new ThumbnailAsyncTask( - uri, iconMime, iconThumb, mThumbSize); + uri, iconMime, iconThumb, mThumbSize, iconAlpha); iconThumb.setTag(task); ProviderExecutor.forAuthority(docAuthority).execute(task); } @@ -886,7 +889,7 @@ public class DirectoryFragment extends Fragment { // hint to remind user they're a directory. if (Document.MIME_TYPE_DIR.equals(docMimeType) && state.derivedMode == MODE_GRID && showThumbnail) { - iconDrawable = IconUtils.applyTint(context, R.drawable.ic_doc_folder, + iconDrawable = IconUtils.applyTintAttr(context, R.drawable.ic_doc_folder, android.R.attr.textColorPrimaryInverse); } @@ -940,20 +943,12 @@ public class DirectoryFragment extends Fragment { line2.setVisibility(hasLine2 ? View.VISIBLE : View.GONE); } - final boolean enabled = isDocumentEnabled(docMimeType, docFlags); - if (enabled) { - setEnabledRecursive(convertView, true); - iconMime.setAlpha(1f); - iconThumb.setAlpha(1f); - if (icon1 != null) icon1.setAlpha(1f); - if (icon2 != null) icon2.setAlpha(1f); - } else { - setEnabledRecursive(convertView, false); - iconMime.setAlpha(0.5f); - iconThumb.setAlpha(0.5f); - if (icon1 != null) icon1.setAlpha(0.5f); - if (icon2 != null) icon2.setAlpha(0.5f); - } + setEnabledRecursive(convertView, enabled); + + iconMime.setAlpha(iconAlpha); + iconThumb.setAlpha(iconAlpha); + if (icon1 != null) icon1.setAlpha(iconAlpha); + if (icon2 != null) icon2.setAlpha(iconAlpha); return convertView; } @@ -1000,14 +995,16 @@ public class DirectoryFragment extends Fragment { private final ImageView mIconMime; private final ImageView mIconThumb; private final Point mThumbSize; + private final float mTargetAlpha; private final CancellationSignal mSignal; - public ThumbnailAsyncTask( - Uri uri, ImageView iconMime, ImageView iconThumb, Point thumbSize) { + public ThumbnailAsyncTask(Uri uri, ImageView iconMime, ImageView iconThumb, Point thumbSize, + float targetAlpha) { mUri = uri; mIconMime = iconMime; mIconThumb = iconThumb; mThumbSize = thumbSize; + mTargetAlpha = targetAlpha; mSignal = new CancellationSignal(); } @@ -1051,11 +1048,10 @@ public class DirectoryFragment extends Fragment { mIconThumb.setTag(null); mIconThumb.setImageBitmap(result); - final float targetAlpha = mIconMime.isEnabled() ? 1f : 0.5f; - mIconMime.setAlpha(targetAlpha); + mIconMime.setAlpha(mTargetAlpha); mIconMime.animate().alpha(0f).start(); mIconThumb.setAlpha(0f); - mIconThumb.animate().alpha(targetAlpha).start(); + mIconThumb.animate().alpha(mTargetAlpha).start(); } } } diff --git a/packages/DocumentsUI/src/com/android/documentsui/IconUtils.java b/packages/DocumentsUI/src/com/android/documentsui/IconUtils.java index b2e38fc83c0cc..416aeb0ed86a9 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/IconUtils.java +++ b/packages/DocumentsUI/src/com/android/documentsui/IconUtils.java @@ -266,15 +266,16 @@ public class IconUtils { } } - public static Drawable applyTint(Context context, int drawableId, int tintAttrId) { - final Resources res = context.getResources(); - - final TypedValue outValue = new TypedValue(); - context.getTheme().resolveAttribute(tintAttrId, outValue, true); - + public static Drawable applyTintColor(Context context, int drawableId, int tintColorId) { final Drawable icon = context.getDrawable(drawableId); icon.mutate(); - icon.setTintList(res.getColorStateList(outValue.resourceId)); + icon.setTintList(context.getResources().getColorStateList(tintColorId)); return icon; } + + public static Drawable applyTintAttr(Context context, int drawableId, int tintAttrId) { + final TypedValue outValue = new TypedValue(); + context.getTheme().resolveAttribute(tintAttrId, outValue, true); + return applyTintColor(context, drawableId, outValue.resourceId); + } } diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java index a465ecd53962c..f81690a365a76 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java +++ b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java @@ -58,7 +58,7 @@ import java.util.concurrent.TimeUnit; * Cache of known storage backends and their roots. */ public class RootsCache { - private static final boolean LOGD = true; + private static final boolean LOGD = false; public static final Uri sNotificationUri = Uri.parse( "content://com.android.documentsui.roots/"); diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java index b19e028aeb573..884cf31d8c797 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java @@ -235,7 +235,7 @@ public class RootsFragment extends Fragment { final TextView summary = (TextView) convertView.findViewById(android.R.id.summary); final Context context = convertView.getContext(); - icon.setImageDrawable(root.loadIcon(context)); + icon.setImageDrawable(root.loadDrawerIcon(context)); title.setText(root.title); // Show available space if no summary diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java b/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java index fcfe518c15010..97d8ed0a2e4b6 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java +++ b/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java @@ -211,9 +211,17 @@ public class RootInfo implements Durable, Parcelable { } } + public Drawable loadDrawerIcon(Context context) { + if (derivedIcon != 0) { + return IconUtils.applyTintColor(context, derivedIcon, R.color.item_root_icon); + } else { + return IconUtils.loadPackageIcon(context, authority, icon); + } + } + public Drawable loadGridIcon(Context context) { if (derivedIcon != 0) { - return IconUtils.applyTint(context, derivedIcon, + return IconUtils.applyTintAttr(context, derivedIcon, android.R.attr.textColorPrimaryInverse); } else { return IconUtils.loadPackageIcon(context, authority, icon); @@ -222,7 +230,7 @@ public class RootInfo implements Durable, Parcelable { public Drawable loadToolbarIcon(Context context) { if (derivedIcon != 0) { - return IconUtils.applyTint(context, derivedIcon, + return IconUtils.applyTintAttr(context, derivedIcon, android.R.attr.colorControlNormal); } else { return IconUtils.loadPackageIcon(context, authority, icon);