diff options
author | Winson Chung <winsonc@google.com> | 2011-09-30 14:41:25 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2011-09-30 14:51:06 -0700 |
commit | e4a647f8793ce7823394db43d6af57f9eab8a340 (patch) | |
tree | 9b06c9800013917de816cfd5b6103b9c22382cae /src | |
parent | 685dfb2dc6430383719d93f10fffec6ab03ef668 (diff) | |
download | android_packages_apps_Trebuchet-e4a647f8793ce7823394db43d6af57f9eab8a340.tar.gz android_packages_apps_Trebuchet-e4a647f8793ce7823394db43d6af57f9eab8a340.tar.bz2 android_packages_apps_Trebuchet-e4a647f8793ce7823394db43d6af57f9eab8a340.zip |
Slight change to inflate as much of the widget info as possible ahead of bg preview loading.
Change-Id: Id2a7ec79674f2d0a58afef3cfd57091dbf0bc736
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher2/AppsCustomizePagedView.java | 95 | ||||
-rw-r--r-- | src/com/android/launcher2/PagedViewWidget.java | 22 |
2 files changed, 66 insertions, 51 deletions
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java index 560c3c717..4dd667b58 100644 --- a/src/com/android/launcher2/AppsCustomizePagedView.java +++ b/src/com/android/launcher2/AppsCustomizePagedView.java @@ -1020,11 +1020,57 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen int cellHeight = ((contentHeight - mPageLayoutPaddingTop - mPageLayoutPaddingBottom - ((mWidgetCountY - 1) * mWidgetHeightGap)) / mWidgetCountY); + // Prepare the set of widgets to load previews for in the background int offset = page * numItemsPerPage; for (int i = offset; i < Math.min(offset + numItemsPerPage, mWidgets.size()); ++i) { items.add(mWidgets.get(i)); } + // Prepopulate the pages with the other widget info, and fill in the previews later + PagedViewGridLayout layout = (PagedViewGridLayout) getPageAt(page); + layout.setColumnCount(layout.getCellCountX()); + for (int i = 0; i < items.size(); ++i) { + Object rawInfo = items.get(i); + PendingAddItemInfo createItemInfo = null; + PagedViewWidget widget = (PagedViewWidget) mLayoutInflater.inflate( + R.layout.apps_customize_widget, layout, false); + if (rawInfo instanceof AppWidgetProviderInfo) { + // Fill in the widget information + AppWidgetProviderInfo info = (AppWidgetProviderInfo) rawInfo; + createItemInfo = new PendingAddWidgetInfo(info, null, null); + int[] cellSpans = mLauncher.getSpanForWidget(info, null); + widget.applyFromAppWidgetProviderInfo(info, -1, cellSpans, + mHolographicOutlineHelper); + widget.setTag(createItemInfo); + } else if (rawInfo instanceof ResolveInfo) { + // Fill in the shortcuts information + ResolveInfo info = (ResolveInfo) rawInfo; + createItemInfo = new PendingAddItemInfo(); + createItemInfo.itemType = LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT; + createItemInfo.componentName = new ComponentName(info.activityInfo.packageName, + info.activityInfo.name); + widget.applyFromResolveInfo(mPackageManager, info, mHolographicOutlineHelper); + widget.setTag(createItemInfo); + } + widget.setOnClickListener(this); + widget.setOnLongClickListener(this); + widget.setOnTouchListener(this); + + // Layout each widget + int ix = i % mWidgetCountX; + int iy = i / mWidgetCountX; + GridLayout.LayoutParams lp = new GridLayout.LayoutParams( + GridLayout.spec(iy, GridLayout.LEFT), + GridLayout.spec(ix, GridLayout.TOP)); + lp.width = cellWidth; + lp.height = cellHeight; + lp.setGravity(Gravity.TOP | Gravity.LEFT); + if (ix > 0) lp.leftMargin = mWidgetWidthGap; + if (iy > 0) lp.topMargin = mWidgetHeightGap; + layout.addView(widget, lp); + } + + // Load the widget previews if (immediate) { AsyncTaskPageData data = new AsyncTaskPageData(page, items, cellWidth, cellHeight, mWidgetCountX, null, null); @@ -1033,7 +1079,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen } else { prepareLoadWidgetPreviewsTask(page, items, cellWidth, cellHeight, mWidgetCountX); } - PagedViewGridLayout layout = (PagedViewGridLayout) getPageAt(page); } private void loadWidgetPreviewsInBackground(AppsCustomizeAsyncTask task, AsyncTaskPageData data) { @@ -1073,56 +1118,14 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen private void onSyncWidgetPageItems(AsyncTaskPageData data) { int page = data.page; PagedViewGridLayout layout = (PagedViewGridLayout) getPageAt(page); - // Only set the column count once we have items - layout.setColumnCount(layout.getCellCountX()); ArrayList<Object> items = data.items; int count = items.size(); - int cellWidth = data.cellWidth; - int cellHeight = data.cellHeight; - int cellCountX = data.cellCountX; for (int i = 0; i < count; ++i) { - Object rawInfo = items.get(i); - PendingAddItemInfo createItemInfo = null; - PagedViewWidget widget = (PagedViewWidget) mLayoutInflater.inflate( - R.layout.apps_customize_widget, layout, false); - if (rawInfo instanceof AppWidgetProviderInfo) { - // Fill in the widget information - AppWidgetProviderInfo info = (AppWidgetProviderInfo) rawInfo; - createItemInfo = new PendingAddWidgetInfo(info, null, null); - int[] cellSpans = mLauncher.getSpanForWidget(info, null); - FastBitmapDrawable preview = new FastBitmapDrawable(data.generatedImages.get(i)); - widget.applyFromAppWidgetProviderInfo(info, preview, -1, cellSpans, - mHolographicOutlineHelper); - widget.setTag(createItemInfo); - } else if (rawInfo instanceof ResolveInfo) { - // Fill in the shortcuts information - ResolveInfo info = (ResolveInfo) rawInfo; - createItemInfo = new PendingAddItemInfo(); - createItemInfo.itemType = LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT; - createItemInfo.componentName = new ComponentName(info.activityInfo.packageName, - info.activityInfo.name); - FastBitmapDrawable preview = new FastBitmapDrawable(data.generatedImages.get(i)); - widget.applyFromResolveInfo(mPackageManager, info, preview, - mHolographicOutlineHelper); - widget.setTag(createItemInfo); + PagedViewWidget widget = (PagedViewWidget) layout.getChildAt(i); + if (widget != null) { + widget.applyPreview(new FastBitmapDrawable(data.generatedImages.get(i)), i); } - widget.setOnClickListener(this); - widget.setOnLongClickListener(this); - widget.setOnTouchListener(this); - - // Layout each widget - int ix = i % cellCountX; - int iy = i / cellCountX; - GridLayout.LayoutParams lp = new GridLayout.LayoutParams( - GridLayout.spec(iy, GridLayout.LEFT), - GridLayout.spec(ix, GridLayout.TOP)); - lp.width = cellWidth; - lp.height = cellHeight; - lp.setGravity(Gravity.TOP | Gravity.LEFT); - if (ix > 0) lp.leftMargin = mWidgetWidthGap; - if (iy > 0) lp.topMargin = mWidgetHeightGap; - layout.addView(widget, lp); } layout.createHardwareLayer(); diff --git a/src/com/android/launcher2/PagedViewWidget.java b/src/com/android/launcher2/PagedViewWidget.java index 4e06570fc..adf94ab09 100644 --- a/src/com/android/launcher2/PagedViewWidget.java +++ b/src/com/android/launcher2/PagedViewWidget.java @@ -52,6 +52,9 @@ import com.android.launcher.R; public class PagedViewWidget extends LinearLayout implements Checkable { static final String TAG = "PagedViewWidgetLayout"; + private static final int sPreviewFadeInDuration = 80; + private static final int sPreviewFadeInStaggerDuration = 20; + private final Paint mPaint = new Paint(); private Bitmap mHolographicOutline; private HolographicOutlineHelper mHolographicOutlineHelper; @@ -111,14 +114,12 @@ public class PagedViewWidget extends LinearLayout implements Checkable { } public void applyFromAppWidgetProviderInfo(AppWidgetProviderInfo info, - FastBitmapDrawable preview, int maxWidth, int[] cellSpan, - HolographicOutlineHelper holoOutlineHelper) { + int maxWidth, int[] cellSpan, HolographicOutlineHelper holoOutlineHelper) { mHolographicOutlineHelper = holoOutlineHelper; final ImageView image = (ImageView) findViewById(R.id.widget_preview); if (maxWidth > -1) { image.setMaxWidth(maxWidth); } - image.setImageDrawable(preview); image.setContentDescription(info.label); mPreviewImageView = image; final TextView name = (TextView) findViewById(R.id.widget_name); @@ -130,11 +131,10 @@ public class PagedViewWidget extends LinearLayout implements Checkable { } public void applyFromResolveInfo(PackageManager pm, ResolveInfo info, - FastBitmapDrawable preview, HolographicOutlineHelper holoOutlineHelper) { + HolographicOutlineHelper holoOutlineHelper) { mHolographicOutlineHelper = holoOutlineHelper; CharSequence label = info.loadLabel(pm); final ImageView image = (ImageView) findViewById(R.id.widget_preview); - image.setImageDrawable(preview); image.setContentDescription(label); mPreviewImageView = image; final TextView name = (TextView) findViewById(R.id.widget_name); @@ -145,6 +145,18 @@ public class PagedViewWidget extends LinearLayout implements Checkable { } } + void applyPreview(FastBitmapDrawable preview, int index) { + final ImageView image = (ImageView) findViewById(R.id.widget_preview); + if (preview != null) { + image.setImageDrawable(preview); + image.setAlpha(0f); + image.animate() + .alpha(1f) + .setDuration(sPreviewFadeInDuration + (index * sPreviewFadeInStaggerDuration)) + .start(); + } + } + public void setHolographicOutline(Bitmap holoOutline) { mHolographicOutline = holoOutline; invalidate(); |