diff options
author | Hyunyoung Song <hyunyoungs@google.com> | 2015-05-12 15:36:20 -0700 |
---|---|---|
committer | Hyunyoung Song <hyunyoungs@google.com> | 2015-05-12 15:40:09 -0700 |
commit | 5cd1d92f6c40b47eff12859d4e13b6431aa778c0 (patch) | |
tree | 044fd811140620ef5c03b0b764f99d19c5ef4172 /src/com/android/launcher3/widget | |
parent | fc9d3d8bcb70216de7709d3edaf9759ac8156b45 (diff) | |
download | android_packages_apps_Trebuchet-5cd1d92f6c40b47eff12859d4e13b6431aa778c0.tar.gz android_packages_apps_Trebuchet-5cd1d92f6c40b47eff12859d4e13b6431aa778c0.tar.bz2 android_packages_apps_Trebuchet-5cd1d92f6c40b47eff12859d4e13b6431aa778c0.zip |
Fixing several layout issues.
- N7/N9 indented area should not block scroll view
- separator at the end of the widget cell should not show up on the last item.
Not covered in this CL:
- Guarantee that last item is showing only 20~40%. Right now, the
hand picked constant works for N5,6,7,9
b/20338324
b/20763871
Change-Id: I274ab95c6c3e2fc8be8ceafb2e8172c0174a41a5
Diffstat (limited to 'src/com/android/launcher3/widget')
-rw-r--r-- | src/com/android/launcher3/widget/WidgetCell.java | 30 | ||||
-rw-r--r-- | src/com/android/launcher3/widget/WidgetRowView.java | 74 | ||||
-rw-r--r-- | src/com/android/launcher3/widget/WidgetsListAdapter.java | 39 |
3 files changed, 34 insertions, 109 deletions
diff --git a/src/com/android/launcher3/widget/WidgetCell.java b/src/com/android/launcher3/widget/WidgetCell.java index 877937151..7ca4df979 100644 --- a/src/com/android/launcher3/widget/WidgetCell.java +++ b/src/com/android/launcher3/widget/WidgetCell.java @@ -51,14 +51,13 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { private static final int FADE_IN_DURATION_MS = 90; /** Widget cell width is calculated by multiplying this factor to grid cell width. */ - private static final float WIDTH_SCALE = 2.8f; + private static final float WIDTH_SCALE = 2.6f; /** Widget preview width is calculated by multiplying this factor to the widget cell width. */ - private static final float PREVIEW_SCALE = 0.9f; + private static final float PREVIEW_SCALE = 0.8f; - private static int mPresetPreviewSize; - private static int mSize; - private static int mDividerWidth; + private int mPresetPreviewSize; + int cellSize; private ImageView mWidgetImage; private TextView mWidgetName; @@ -93,14 +92,9 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { } private void setContainerWidth() { - // Do nothing if already set - if (mSize > 0) { - return; - } DeviceProfile profile = LauncherAppState.getInstance().getDynamicGrid().getDeviceProfile(); - mSize = (int) (profile.cellWidthPx * WIDTH_SCALE); + cellSize = (int) (profile.cellWidthPx * WIDTH_SCALE); mPresetPreviewSize = (int) (profile.cellWidthPx * WIDTH_SCALE * PREVIEW_SCALE); - mDividerWidth = getResources().getDimensionPixelSize(R.dimen.widget_row_divider); } @Override @@ -117,12 +111,6 @@ 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} */ @@ -133,7 +121,6 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { mWidgetImage.setImageDrawable(null); mWidgetName.setText(null); mWidgetDims.setText(null); - setSeparator(true); if (mActiveRequest != null) { mActiveRequest.cleanup(); @@ -254,11 +241,4 @@ 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 deleted file mode 100644 index 05760ae48..000000000 --- a/src/com/android/launcher3/widget/WidgetRowView.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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 d114883ad..d45ff1d46 100644 --- a/src/com/android/launcher3/widget/WidgetsListAdapter.java +++ b/src/com/android/launcher3/widget/WidgetsListAdapter.java @@ -18,14 +18,19 @@ package com.android.launcher3.widget; import android.content.Context; import android.content.pm.ResolveInfo; import android.support.v7.widget.RecyclerView; +import android.content.res.Resources; import android.support.v7.widget.RecyclerView.Adapter; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import com.android.launcher3.BubbleTextView; + +import com.android.launcher3.DeviceProfile; +import com.android.launcher3.DynamicGrid; import com.android.launcher3.IconCache; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAppState; @@ -46,7 +51,7 @@ import java.util.List; public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> { private static final String TAG = "WidgetsListAdapter"; - private static final boolean DEBUG = false; + private static final boolean DEBUG = true; private Context mContext; private Launcher mLauncher; @@ -59,6 +64,9 @@ public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> { private View.OnClickListener mIconClickListener; private View.OnLongClickListener mIconLongClickListener; + private static final int PRESET_INDENT_SIZE_TABLET = 56; + private int mIndent = 0; + public WidgetsListAdapter(Context context, View.OnClickListener iconClickListener, View.OnLongClickListener iconLongClickListener, @@ -71,6 +79,8 @@ public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> { mLauncher = launcher; mIconCache = LauncherAppState.getInstance().getIconCache(); + + setContainerHeight(); } public void setWidgetsModel(WidgetsModel w) { @@ -96,6 +106,7 @@ public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> { // Add more views. // if there are too many, hide them. int diff = infoList.size() - row.getChildCount(); + if (diff > 0) { for (int i = 0; i < diff; i++) { WidgetCell widget = new WidgetCell(mContext); @@ -105,10 +116,11 @@ 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); - } + LayoutParams lp = widget.getLayoutParams(); + lp.height = widget.cellSize; + lp.width = widget.cellSize; + widget.setLayoutParams(lp); + row.addView(widget); } } else if (diff < 0) { @@ -152,11 +164,10 @@ 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); + View cellList = container.findViewById(R.id.widgets_cell_list); + LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) cellList.getLayoutParams(); + lp.setMarginStart(mIndent); + return new WidgetsRowViewHolder(container); } @@ -181,4 +192,12 @@ public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> { } return mWidgetPreviewLoader; } + + private void setContainerHeight() { + Resources r = mContext.getResources(); + DeviceProfile profile = LauncherAppState.getInstance().getDynamicGrid().getDeviceProfile(); + if (profile.isLargeTablet || profile.isTablet) { + mIndent = DynamicGrid.pxFromDp(PRESET_INDENT_SIZE_TABLET, r.getDisplayMetrics()); + } + } } |