summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/layout/widget_cell.xml6
-rw-r--r--res/layout/widgets_list_row_view.xml11
-rw-r--r--res/values/dimens.xml6
-rw-r--r--src/com/android/launcher3/DeviceProfile.java5
-rw-r--r--src/com/android/launcher3/widget/WidgetCell.java37
-rw-r--r--src/com/android/launcher3/widget/WidgetRowView.java74
-rw-r--r--src/com/android/launcher3/widget/WidgetsListAdapter.java10
7 files changed, 133 insertions, 16 deletions
diff --git a/res/layout/widget_cell.xml b/res/layout/widget_cell.xml
index ab23b842e..196dfca66 100644
--- a/res/layout/widget_cell.xml
+++ b/res/layout/widget_cell.xml
@@ -19,10 +19,11 @@
android:layout_width="@dimen/widget_preview_container_width"
android:layout_height="@dimen/widget_cell_height"
android:layout_weight="1"
- android:layout_marginRight="@dimen/widget_row_divider"
+ android:layout_marginEnd="@dimen/widget_row_divider"
android:orientation="vertical"
android:background="@color/widgets_cell_color"
- android:focusable="true">
+ android:focusable="true"
+ android:gravity="center_horizontal">
<LinearLayout
android:layout_width="wrap_content"
@@ -43,7 +44,6 @@
android:singleLine="true"
android:ellipsize="end"
android:fadingEdge="horizontal"
-
android:textColor="@color/widgets_view_item_text_color"
android:textSize="16sp"
android:textAlignment="viewStart"
diff --git a/res/layout/widgets_list_row_view.xml b/res/layout/widgets_list_row_view.xml
index 12f6401e4..ea95d2407 100644
--- a/res/layout/widgets_list_row_view.xml
+++ b/res/layout/widgets_list_row_view.xml
@@ -55,17 +55,18 @@
</LinearLayout>
<!-- Widget list -->
- <RelativeLayout
+ <com.android.launcher3.widget.WidgetRowView
+ android:id="@+id/widget_row"
android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:layout_height="@dimen/widget_cell_height"
android:layout_gravity="end"
+ android:layout_marginLeft="@dimen/widget_row_padding"
android:background="@color/widgets_cell_color"
>
<HorizontalScrollView
android:id="@+id/widgets_scroll_container"
android:layout_width="match_parent"
- android:layout_height="@dimen/widget_cell_height"
- android:layout_marginLeft="@dimen/widget_row_padding"
+ android:layout_height="match_parent"
android:scrollbars="none" >
<LinearLayout
android:id="@+id/widgets_cell_list"
@@ -74,5 +75,5 @@
android:orientation="horizontal"
android:background="@color/widget_text_panel"/>
</HorizontalScrollView>
- </RelativeLayout>
+ </com.android.launcher3.widget.WidgetRowView>
</LinearLayout>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 46830d6e5..fd5bff30e 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -82,7 +82,7 @@
<!-- Widget tray -->
<dimen name="widget_container_inset">8dp</dimen>
- <dimen name="widget_preview_size">120dp</dimen>
+ <dimen name="widget_preview_size">130dp</dimen>
<dimen name="widget_preview_padding_top">8dp</dimen>
<dimen name="widget_preview_label_vertical_padding">8dp</dimen>
<dimen name="widget_preview_label_horizontal_padding">8dp</dimen>
@@ -94,10 +94,10 @@
<dimen name="widget_section_icon_horizontal_padding">16dp</dimen>
<!-- Equation: widget_preview_size + 2 * widget_preview_padding_horizontal -->
- <dimen name="widget_preview_container_width">136dp</dimen>
+ <dimen name="widget_preview_container_width">146dp</dimen>
<dimen name="widget_cell_height">150dp</dimen>
<dimen name="widget_row_padding">8dp</dimen>
- <dimen name="widget_row_divider">1dp</dimen>
+ <dimen name="widget_row_divider">2dp</dimen>
<!-- Padding applied to shortcut previews -->
<dimen name="shortcut_preview_padding_left">0dp</dimen>
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 918517ebd..c1dd85961 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -80,12 +80,11 @@ public class DeviceProfile {
int defaultLayoutId;
boolean isLandscape;
- boolean isTablet;
- boolean isLargeTablet;
+ public boolean isTablet;
+ public boolean isLargeTablet;
public boolean isLayoutRtl;
boolean transposeLayoutWithOrientation;
-
int desiredWorkspaceLeftRightMarginPx;
public int edgeMarginPx;
Rect defaultWidgetPadding;
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();
+ }
}
diff --git a/src/com/android/launcher3/widget/WidgetRowView.java b/src/com/android/launcher3/widget/WidgetRowView.java
new file mode 100644
index 000000000..05760ae48
--- /dev/null
+++ b/src/com/android/launcher3/widget/WidgetRowView.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.launcher3.widget;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.util.AttributeSet;
+import android.widget.LinearLayout;
+
+
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.DynamicGrid;
+import com.android.launcher3.LauncherAppState;
+
+/**
+ * Represents the individual cell of the widget inside the widget tray.
+ */
+public class WidgetRowView extends LinearLayout {
+
+ private static final int PRESET_INDENT_SIZE_TABLET = 56;
+
+ /** Widget row width is calculated by multiplying this factor to grid cell width. */
+ private static final float HEIGHT_SCALE = 2.8f;
+
+ static int sIndent = 0;
+ static int sHeight = 0;
+
+ public WidgetRowView(Context context) {
+ this(context, null);
+ }
+
+ public WidgetRowView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public WidgetRowView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ setContainerHeight();
+ setWillNotDraw(false);
+ setClipToPadding(false);
+ setAccessibilityDelegate(LauncherAppState.getInstance().getAccessibilityDelegate());
+ }
+
+ /**
+ * Sets the widget cell container size based on the physical dimension of the device.
+ */
+ private void setContainerHeight() {
+ // Do nothing if already set
+ if (sHeight > 0) {
+ return;
+ }
+
+ Resources r = getResources();
+ DeviceProfile profile = LauncherAppState.getInstance().getDynamicGrid().getDeviceProfile();
+ if (profile.isLargeTablet || profile.isTablet) {
+ sIndent = DynamicGrid.pxFromDp(PRESET_INDENT_SIZE_TABLET, r.getDisplayMetrics());
+ }
+ sHeight = (int) (profile.cellWidthPx * HEIGHT_SCALE);
+ }
+}
diff --git a/src/com/android/launcher3/widget/WidgetsListAdapter.java b/src/com/android/launcher3/widget/WidgetsListAdapter.java
index a7728a11b..8b0a43b2f 100644
--- a/src/com/android/launcher3/widget/WidgetsListAdapter.java
+++ b/src/com/android/launcher3/widget/WidgetsListAdapter.java
@@ -23,6 +23,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
+import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.launcher3.IconCache;
@@ -105,6 +106,10 @@ public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> {
// set up touch.
widget.setOnClickListener(mIconClickListener);
widget.setOnLongClickListener(mIconLongClickListener);
+ // Add a devider if it is not the last item.
+ if (i == diff - 1) {
+ widget.setSeparator(false);
+ }
row.addView(widget);
}
} else if (diff < 0) {
@@ -156,6 +161,11 @@ public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> {
ViewGroup container = (ViewGroup) mLayoutInflater.inflate(
R.layout.widgets_list_row_view, parent, false);
+ WidgetRowView row = (WidgetRowView) container.findViewById(R.id.widget_row);
+ LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) row.getLayoutParams();
+ lp.setMarginStart(WidgetRowView.sIndent);
+ lp.height = WidgetRowView.sHeight;
+ row.setLayoutParams(lp);
return new WidgetsRowViewHolder(container);
}