Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(335)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java

Issue 2654193002: [Android History] List item shadows and width constrained styling (Closed)
Patch Set: Changes from dgn@ and dfalcantara@ reviews Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
index f8b37fd51e18b585903a43f1a65eb3730af999ae..acb3b5360b6cd890ab255a8069250a56fb7db7f9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
@@ -9,6 +9,7 @@ import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.graphics.Rect;
import android.net.Uri;
import android.provider.Browser;
import android.support.annotation.VisibleForTesting;
@@ -37,6 +38,7 @@ import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver;
import org.chromium.chrome.browser.util.IntentUtils;
import org.chromium.chrome.browser.widget.FadingShadowView;
+import org.chromium.chrome.browser.widget.displaystyle.UiConfig;
import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
import org.chromium.chrome.browser.widget.selection.SelectableListToolbar.SearchDelegate;
import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
@@ -57,6 +59,9 @@ public class HistoryManager implements OnMenuItemClickListener, SignInStateObser
private static HistoryProvider sProviderForTests;
+ private final int mListItemLateralShadowSizePx;
+ private final int mDefaultLateralListItemMarginPx;
+
private final Activity mActivity;
private final SelectableListLayout<HistoryItem> mSelectableListLayout;
private final HistoryAdapter mHistoryAdapter;
@@ -82,11 +87,15 @@ public class HistoryManager implements OnMenuItemClickListener, SignInStateObser
mHistoryAdapter = new HistoryAdapter(mSelectionDelegate, this,
sProviderForTests != null ? sProviderForTests : new BrowsingHistoryBridge());
+ // 1. Create SelectableListLayout.
mSelectableListLayout =
(SelectableListLayout<HistoryItem>) LayoutInflater.from(activity).inflate(
R.layout.history_main, null);
+
+ // 2. Initialize RecyclerView.
mRecyclerView = mSelectableListLayout.initializeRecyclerView(mHistoryAdapter);
+ // 3. Initialize toolbar.
mToolbar = (HistoryManagerToolbar) mSelectableListLayout.initializeToolbar(
R.layout.history_toolbar, mSelectionDelegate, R.string.menu_history, null,
R.id.normal_menu_group, R.id.selection_mode_menu_group,
@@ -96,6 +105,28 @@ public class HistoryManager implements OnMenuItemClickListener, SignInStateObser
mToolbarShadow = (FadingShadowView) mSelectableListLayout.findViewById(R.id.shadow);
mToolbarShadow.setVisibility(View.GONE);
+ // 4. Configure values for {@link UiConfig#DISPLAY_STYLE_WIDE} and
+ // {@link UiConfig#DISPLAY_STYLE_REGULAR}.
+ // The list item shadow is part of the drawable nine-patch used as the list item background.
+ // Use the dimensions of the shadow (from the drawable's padding) to calculate the margins
+ // to use in the regular and wide display styles.
+ Rect listItemShadow = new Rect();
+ ApiCompatibilityUtils.getDrawable(
+ mActivity.getResources(), R.drawable.card_middle).getPadding(listItemShadow);
+ int cardCornerRadius = mActivity.getResources().getDimensionPixelSize(
+ R.dimen.card_corner_radius);
+
+ assert listItemShadow.left == listItemShadow.right;
+ // The list item shadow size is used in {@link UiConfig#DISPLAY_STYLE_WIDE} to visually
+ // align other elements with the edge of the list items.
+ mListItemLateralShadowSizePx = listItemShadow.left;
+ // A negative margin is used in {@link UiConfig#DISPLAY_STYLE_REGULAR} to hide the lateral
+ // shadow.
+ mDefaultLateralListItemMarginPx = -(listItemShadow.left + cardCornerRadius);
+
+ mSelectableListLayout.setHasWideDisplayStyle(mListItemLateralShadowSizePx);
+
+ // 5. Initialize empty view.
mEmptyView = mSelectableListLayout.initializeEmptyView(
VectorDrawableCompat.create(
mActivity.getResources(), R.drawable.history_big,
@@ -105,8 +136,18 @@ public class HistoryManager implements OnMenuItemClickListener, SignInStateObser
mEmptyView.setTextColor(ApiCompatibilityUtils.getColor(mActivity.getResources(),
R.color.google_grey_500));
+ // 6. Create large icon bridge.
+ mLargeIconBridge = new LargeIconBridge(Profile.getLastUsedProfile().getOriginalProfile());
+ ActivityManager activityManager = ((ActivityManager) ContextUtils
+ .getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE));
+ int maxSize = Math.min((activityManager.getMemoryClass() / 4) * MEGABYTES_TO_BYTES,
+ FAVICON_MAX_CACHE_SIZE_BYTES);
+ mLargeIconBridge.createCache(maxSize);
+
+ // 7. Initialize the adapter to load items.
mHistoryAdapter.initialize();
+ // 8. Add scroll listener to page in more items when necessary.
mRecyclerView.addOnScrollListener(new OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
@@ -124,13 +165,7 @@ public class HistoryManager implements OnMenuItemClickListener, SignInStateObser
}
}});
- mLargeIconBridge = new LargeIconBridge(Profile.getLastUsedProfile().getOriginalProfile());
- ActivityManager activityManager = ((ActivityManager) ContextUtils
- .getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE));
- int maxSize = Math.min((activityManager.getMemoryClass() / 4) * MEGABYTES_TO_BYTES,
- FAVICON_MAX_CACHE_SIZE_BYTES);
- mLargeIconBridge.createCache(maxSize);
-
+ // 9. Listen to changes in sign in state.
SigninManager.get(mActivity).addSignInStateObserver(this);
recordUserAction("Show");
@@ -278,6 +313,31 @@ public class HistoryManager implements OnMenuItemClickListener, SignInStateObser
return mLargeIconBridge;
}
+ /**
+ * @return The SelectableListLayout that displays HistoryItems.
+ */
+ public SelectableListLayout<HistoryItem> getSelectableListLayout() {
+ return mSelectableListLayout;
+ }
+
+ /**
+ * @return The px size of the lateral shadow in the 9-patch used for the list item background.
+ * This value should be used in {@link UiConfig#DISPLAY_STYLE_REGULAR} to visually align
+ * elements with the edge of the list items.
+ */
+ public int getListItemLateralShadowSizePx() {
+ return mListItemLateralShadowSizePx;
+ }
+
+ /**
+ * @return The start and end margin for list items when in
+ * {@link UiConfig#DISPLAY_STYLE_REGULAR}. This value should be used to hide the lateral
+ * shadows on list items.
+ */
+ public int getDefaultLateralListItemMarginPx() {
+ return mDefaultLateralListItemMarginPx;
+ }
+
private void openItemsInNewTabs(List<HistoryItem> items, boolean isIncognito) {
recordSelectionCountHistorgram("Open");
recordUserActionWithOptionalSearch("OpenSelected" + (isIncognito ? "Incognito" : ""));

Powered by Google App Engine
This is Rietveld 408576698