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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/suggestions/TileGridLayout.java

Issue 2714723002: Add feature for condensed NTP tiles. (Closed)
Patch Set: Cleanups. Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.suggestions; 5 package org.chromium.chrome.browser.suggestions;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.content.res.Resources; 8 import android.content.res.Resources;
9 import android.text.TextUtils; 9 import android.text.TextUtils;
10 import android.util.AttributeSet; 10 import android.util.AttributeSet;
11 import android.view.View; 11 import android.view.View;
12 import android.widget.FrameLayout; 12 import android.widget.FrameLayout;
13 13
14 import org.chromium.base.ApiCompatibilityUtils; 14 import org.chromium.base.ApiCompatibilityUtils;
15 import org.chromium.chrome.R; 15 import org.chromium.chrome.R;
16 import org.chromium.chrome.browser.util.MathUtils; 16 import org.chromium.chrome.browser.util.MathUtils;
17 17
18 /** 18 /**
19 * A layout that arranges tiles in a grid. 19 * A layout that arranges tiles in a grid.
20 */ 20 */
21 public class TileGridLayout extends FrameLayout { 21 public class TileGridLayout extends FrameLayout {
22 private static final int MAX_COLUMNS = 4; 22 private final int mVerticalSpacing;
23 private final int mMinHorizontalSpacing;
24 private final int mMaxHorizontalSpacing;
25 private final int mMaxWidth;
23 26
24 private int mVerticalSpacing; 27 private int mMaxRows;
28 private int mMaxColumns;
25 private int mExtraVerticalSpacing; 29 private int mExtraVerticalSpacing;
26 private int mMinHorizontalSpacing;
27 private int mMaxHorizontalSpacing;
28 private int mMaxWidth;
29 private int mMaxRows;
30 30
31 /** 31 /**
32 * Constructor for inflating from XML.
33 *
32 * @param context The view context in which this item will be shown. 34 * @param context The view context in which this item will be shown.
33 * @param attrs The attributes of the XML tag that is inflating the view. 35 * @param attrs The attributes of the XML tag that is inflating the view.
34 */ 36 */
35 public TileGridLayout(Context context, AttributeSet attrs) { 37 public TileGridLayout(Context context, AttributeSet attrs) {
36 super(context, attrs); 38 super(context, attrs);
37 39
38 Resources res = getResources(); 40 Resources res = getResources();
39 mVerticalSpacing = res.getDimensionPixelOffset(R.dimen.tile_grid_layout_ vertical_spacing); 41 mVerticalSpacing = res.getDimensionPixelOffset(R.dimen.tile_grid_layout_ vertical_spacing);
40 mMinHorizontalSpacing = 42 mMinHorizontalSpacing =
41 res.getDimensionPixelOffset(R.dimen.tile_grid_layout_min_horizon tal_spacing); 43 res.getDimensionPixelOffset(R.dimen.tile_grid_layout_min_horizon tal_spacing);
42 mMaxHorizontalSpacing = 44 mMaxHorizontalSpacing =
43 res.getDimensionPixelOffset(R.dimen.tile_grid_layout_max_horizon tal_spacing); 45 res.getDimensionPixelOffset(R.dimen.tile_grid_layout_max_horizon tal_spacing);
44 mMaxWidth = res.getDimensionPixelOffset(R.dimen.tile_grid_layout_max_wid th); 46 mMaxWidth = res.getDimensionPixelOffset(R.dimen.tile_grid_layout_max_wid th);
45 } 47 }
46 48
47 /** 49 /**
48 * Sets the maximum number of rows to display. Any items that don't fit with in these rows will 50 * Sets the maximum number of rows to display. Any items that don't fit will be hidden.
49 * be hidden.
50 */ 51 */
51 public void setMaxRows(int rows) { 52 public void setMaxRows(int rows) {
52 mMaxRows = rows; 53 mMaxRows = rows;
53 } 54 }
54 55
55 /** 56 /**
57 * Sets the maximum number of columns to display. Any items that don't fit w ill be hidden.
58 */
59 public void setMaxColumns(int columns) {
60 mMaxColumns = columns;
61 }
62
63 /**
56 * Sets the extra vertical spacing that must be used. It will be distributed evenly above each 64 * Sets the extra vertical spacing that must be used. It will be distributed evenly above each
57 * row. 65 * row.
58 */ 66 */
59 public void setExtraVerticalSpacing(int spacing) { 67 public void setExtraVerticalSpacing(int spacing) {
60 if (mExtraVerticalSpacing == spacing) { 68 if (mExtraVerticalSpacing == spacing) {
61 return; 69 return;
62 } 70 }
63 mExtraVerticalSpacing = spacing; 71 mExtraVerticalSpacing = spacing;
64 72
65 // Clear the measure cache for this view and make sure it will be remeas ured. 73 // Clear the measure cache for this view and make sure it will be remeas ured.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 measureChild(getChildAt(i), MeasureSpec.UNSPECIFIED, MeasureSpec.UNS PECIFIED); 106 measureChild(getChildAt(i), MeasureSpec.UNSPECIFIED, MeasureSpec.UNS PECIFIED);
99 } 107 }
100 108
101 // Determine the number of columns that will fit. 109 // Determine the number of columns that will fit.
102 int gridWidth = totalWidth - ApiCompatibilityUtils.getPaddingStart(this) 110 int gridWidth = totalWidth - ApiCompatibilityUtils.getPaddingStart(this)
103 - ApiCompatibilityUtils.getPaddingEnd(this); 111 - ApiCompatibilityUtils.getPaddingEnd(this);
104 int childHeight = getChildAt(0).getMeasuredHeight(); 112 int childHeight = getChildAt(0).getMeasuredHeight();
105 int childWidth = getChildAt(0).getMeasuredWidth(); 113 int childWidth = getChildAt(0).getMeasuredWidth();
106 int numColumns = MathUtils.clamp( 114 int numColumns = MathUtils.clamp(
107 (gridWidth + mMinHorizontalSpacing) / (childWidth + mMinHorizont alSpacing), 1, 115 (gridWidth + mMinHorizontalSpacing) / (childWidth + mMinHorizont alSpacing), 1,
108 MAX_COLUMNS); 116 mMaxColumns);
109 117
110 // Ensure column spacing isn't greater than mMaxHorizontalSpacing. 118 // Ensure column spacing isn't greater than mMaxHorizontalSpacing.
111 int gridWidthMinusColumns = Math.max(0, gridWidth - numColumns * childWi dth); 119 int gridWidthMinusColumns = Math.max(0, gridWidth - numColumns * childWi dth);
112 int gridSidePadding = gridWidthMinusColumns - mMaxHorizontalSpacing * (n umColumns - 1); 120 int gridSidePadding = gridWidthMinusColumns - mMaxHorizontalSpacing * (n umColumns - 1);
113 121
114 int gridStart = 0; 122 int gridStart = 0;
115 float horizontalSpacing; 123 float horizontalSpacing;
116 if (gridSidePadding > 0) { 124 if (gridSidePadding > 0) {
117 horizontalSpacing = mMaxHorizontalSpacing; 125 horizontalSpacing = mMaxHorizontalSpacing;
118 gridStart = gridSidePadding / 2; 126 gridStart = gridSidePadding / 2;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 /** @return A tile view associated to the provided URL, or {@code null} if n one is found. */ 163 /** @return A tile view associated to the provided URL, or {@code null} if n one is found. */
156 private TileView getTileView(String url) { 164 private TileView getTileView(String url) {
157 int childCount = getChildCount(); 165 int childCount = getChildCount();
158 for (int i = 0; i < childCount; i++) { 166 for (int i = 0; i < childCount; i++) {
159 TileView tileView = (TileView) getChildAt(i); 167 TileView tileView = (TileView) getChildAt(i);
160 if (TextUtils.equals(url, tileView.getUrl())) return tileView; 168 if (TextUtils.equals(url, tileView.getUrl())) return tileView;
161 } 169 }
162 return null; 170 return null;
163 } 171 }
164 } 172 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698