diff --git a/res/layout/widgets_list_row_view.xml b/res/layout/widgets_list_row_view.xml index ea95d2407e..8bc8be44a1 100644 --- a/res/layout/widgets_list_row_view.xml +++ b/res/layout/widgets_list_row_view.xml @@ -15,6 +15,7 @@ --> - - - - + android:gravity="start|center_vertical" + android:importantForAccessibility="no" + android:paddingBottom="@dimen/widget_section_vertical_padding" + android:paddingLeft="@dimen/widget_section_horizontal_padding" + android:paddingRight="@dimen/widget_section_horizontal_padding" + android:paddingTop="@dimen/widget_section_vertical_padding" + android:singleLine="true" + android:textColor="@color/widgets_view_section_text_color" + android:textSize="20sp" + launcher:customShadows="false" + launcher:deferShadowGeneration="true" + launcher:iconDisplay="widget_section" + launcher:iconSizeOverride="@dimen/widget_section_icon_size" + launcher:layoutHorizontal="true" /> + diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 5447371a4f..6280e52476 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -95,9 +95,9 @@ 8dp 56dp - 72dp - 8dp - 16dp + 40dp + 8dp + 16dp 146dp diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java index 46caf4ab99..d32c919196 100644 --- a/src/com/android/launcher3/BubbleTextView.java +++ b/src/com/android/launcher3/BubbleTextView.java @@ -28,13 +28,13 @@ import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.SparseArray; import android.util.TypedValue; -import android.view.Gravity; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.ViewConfiguration; import android.widget.TextView; import com.android.launcher3.IconCache.IconLoadRequest; +import com.android.launcher3.widget.PackageItemInfo; /** * TextView that draws a bubble behind the text. We cannot use a LineBackgroundSpan @@ -119,11 +119,6 @@ public class BubbleTextView extends TextView { mBackground = null; } - // If we are laying out horizontal, then center the text vertically - if (mLayoutHorizontal) { - setGravity(Gravity.CENTER_VERTICAL); - } - mLongPressHelper = new CheckLongPressHelper(this); mOutlineHelper = HolographicOutlineHelper.obtain(getContext()); @@ -170,6 +165,20 @@ public class BubbleTextView extends TextView { verifyHighRes(); } + public void applyFromPackageItemInfo(PackageItemInfo info) { + setIcon(Utilities.createIconDrawable(info.iconBitmap), mIconSize); + setText(info.title); + if (info.contentDescription != null) { + setContentDescription(info.contentDescription); + } + // We don't need to check the info since it's not a ShortcutInfo + super.setTag(info); + + // Verify high res immediately + verifyHighRes(); + } + + @Override protected boolean setFrame(int left, int top, int right, int bottom) { if (getLeft() != left || getRight() != right || getTop() != top || getBottom() != bottom) { @@ -459,6 +468,8 @@ public class BubbleTextView extends TextView { } else if (info instanceof ShortcutInfo) { applyFromShortcutInfo((ShortcutInfo) info, LauncherAppState.getInstance().getIconCache()); + } else if (info instanceof PackageItemInfo) { + applyFromPackageItemInfo((PackageItemInfo) info); } } } @@ -483,6 +494,12 @@ public class BubbleTextView extends TextView { mIconLoadRequest = LauncherAppState.getInstance().getIconCache() .updateIconInBackground(BubbleTextView.this, info); } + } else if (getTag() instanceof PackageItemInfo) { + PackageItemInfo info = (PackageItemInfo) getTag(); + if (info.usingLowResIcon) { + mIconLoadRequest = LauncherAppState.getInstance().getIconCache() + .updateIconInBackground(BubbleTextView.this, info); + } } } } diff --git a/src/com/android/launcher3/IconCache.java b/src/com/android/launcher3/IconCache.java index 0596fbe168..fff07c6ed4 100644 --- a/src/com/android/launcher3/IconCache.java +++ b/src/com/android/launcher3/IconCache.java @@ -374,6 +374,9 @@ public class IconCache { getTitleAndIcon(st, st.promisedIntent != null ? st.promisedIntent : st.intent, st.user, false); + } else if (info instanceof PackageItemInfo) { + PackageItemInfo pti = (PackageItemInfo) info; + getTitleAndIconForApp(pti.packageName, pti.user, false, pti); } mMainThreadExecutor.execute(new Runnable() { diff --git a/src/com/android/launcher3/widget/WidgetsListAdapter.java b/src/com/android/launcher3/widget/WidgetsListAdapter.java index 8b0a43b2f4..d114883ad1 100644 --- a/src/com/android/launcher3/widget/WidgetsListAdapter.java +++ b/src/com/android/launcher3/widget/WidgetsListAdapter.java @@ -17,22 +17,21 @@ package com.android.launcher3.widget; import android.content.Context; import android.content.pm.ResolveInfo; +import android.support.v7.widget.RecyclerView; 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.widget.ImageView; import android.widget.LinearLayout; -import android.widget.TextView; +import com.android.launcher3.BubbleTextView; import com.android.launcher3.IconCache; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherAppWidgetProviderInfo; import com.android.launcher3.R; import com.android.launcher3.WidgetPreviewLoader; -import com.android.launcher3.compat.UserHandleCompat; import java.util.List; @@ -120,16 +119,8 @@ public class WidgetsListAdapter extends Adapter { // Bind the views in the application info section. PackageItemInfo infoOut = mWidgetsModel.getPackageItemInfo(pos); - if (infoOut.usingLowResIcon) { - // TODO(hyunyoungs): call this in none UI thread in the same way as BubbleTextView. - mIconCache.getTitleAndIconForApp(infoOut.packageName, - UserHandleCompat.myUserHandle(), false /* useLowResIcon */, infoOut); - } - - TextView tv = ((TextView) holder.getContent().findViewById(R.id.section)); - tv.setText(infoOut.title); - ImageView iv = (ImageView) holder.getContent().findViewById(R.id.section_image); - iv.setImageBitmap(infoOut.iconBitmap); + BubbleTextView tv = ((BubbleTextView) holder.getContent().findViewById(R.id.section)); + tv.applyFromPackageItemInfo(infoOut); // Bind the view in the widget horizontal tray region. for (int i=0; i < infoList.size(); i++) {