diff options
Diffstat (limited to 'src/com/android/launcher3/widget/WidgetCell.java')
-rw-r--r-- | src/com/android/launcher3/widget/WidgetCell.java | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/src/com/android/launcher3/widget/WidgetCell.java b/src/com/android/launcher3/widget/WidgetCell.java index 2df170eff..f5c44ab0e 100644 --- a/src/com/android/launcher3/widget/WidgetCell.java +++ b/src/com/android/launcher3/widget/WidgetCell.java @@ -49,7 +49,16 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { private static final boolean DEBUG = false; private static final int FADE_IN_DURATION_MS = 90; - private int mPresetPreviewSize; + + /** Widget cell width is calculated by multiplying this factor to grid cell width. */ + private static final float WIDTH_SCALE = 2.8f; + + /** Widget preview width is calculated by multiplying this factor to the widget cell width. */ + private static final float PREVIEW_SCALE = 0.9f; + + private static int mPresetPreviewSize; + private static int mSize; + private static int mDividerWidth; private ImageView mWidgetImage; private TextView mWidgetName; @@ -76,12 +85,22 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { final Resources r = context.getResources(); mDimensionsFormatString = r.getString(R.string.widget_dims_format); - mPresetPreviewSize = r.getDimensionPixelSize(R.dimen.widget_preview_size); + setContainerWidth(); setWillNotDraw(false); setClipToPadding(false); setAccessibilityDelegate(LauncherAppState.getInstance().getAccessibilityDelegate()); + } + private void setContainerWidth() { + // Do nothing if already set + if (mSize > 0) { + return; + } + DeviceProfile profile = LauncherAppState.getInstance().getDynamicGrid().getDeviceProfile(); + mSize = (int) (profile.cellWidthPx * WIDTH_SCALE); + mPresetPreviewSize = (int) (profile.cellWidthPx * WIDTH_SCALE * PREVIEW_SCALE); + mDividerWidth = getResources().getDimensionPixelSize(R.dimen.widget_row_divider); } @Override @@ -98,6 +117,12 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { mWidgetDims = ((TextView) findViewById(R.id.widget_dims)); } + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(MeasureSpec.makeMeasureSpec(mSize, MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(mSize, MeasureSpec.EXACTLY)); + } + /** * Called to clear the view and free attached resources. (e.g., {@link Bitmap} */ @@ -108,6 +133,7 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { mWidgetImage.setImageDrawable(null); mWidgetName.setText(null); mWidgetDims.setText(null); + setSeparator(true); if (mActiveRequest != null) { mActiveRequest.cleanup(); @@ -229,4 +255,11 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { } return ""; } + + public void setSeparator(boolean enable) { + LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) getLayoutParams(); + lp.setMarginEnd(enable? mDividerWidth : 0); + setLayoutParams(lp); + requestLayout(); + } } |