diff options
author | Hyunyoung Song <hyunyoungs@google.com> | 2015-06-05 21:14:32 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-05 21:14:32 +0000 |
commit | 90429e11e75f5756d250f1156cac7cc6479f90a1 (patch) | |
tree | e0dd92744e01459910aeb11792581f13d9c0f57f /src | |
parent | 6103501fa6c70ca112ac867e18e5f82021bf4f7c (diff) | |
parent | f00d02b254d94eeaf52742e0640e9eacd63fafca (diff) | |
download | android_packages_apps_Trebuchet-90429e11e75f5756d250f1156cac7cc6479f90a1.tar.gz android_packages_apps_Trebuchet-90429e11e75f5756d250f1156cac7cc6479f90a1.tar.bz2 android_packages_apps_Trebuchet-90429e11e75f5756d250f1156cac7cc6479f90a1.zip |
Merge "Improve AyncTask throughput inside WidgetPreviewLoader" into ub-launcher3-burnaby
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher3/WidgetPreviewLoader.java | 20 | ||||
-rw-r--r-- | src/com/android/launcher3/widget/WidgetCell.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher3/widget/WidgetImageView.java | 8 |
3 files changed, 21 insertions, 11 deletions
diff --git a/src/com/android/launcher3/WidgetPreviewLoader.java b/src/com/android/launcher3/WidgetPreviewLoader.java index a62177142..cfeced2df 100644 --- a/src/com/android/launcher3/WidgetPreviewLoader.java +++ b/src/com/android/launcher3/WidgetPreviewLoader.java @@ -586,26 +586,26 @@ public class WidgetPreviewLoader { protected Bitmap doInBackground(Void... params) { Bitmap unusedBitmap = null; + // If already cancelled before this gets to run in the background, then return early + if (isCancelled()) { + return null; + } synchronized (mUnusedBitmaps) { - // If already cancelled before this gets to run in the background, then return early - if (isCancelled()) { - return null; - } - // Check if we can use a bitmap + // Check if we can re-use a bitmap for (Bitmap candidate : mUnusedBitmaps) { if (candidate != null && candidate.isMutable() && candidate.getWidth() == mPreviewWidth && candidate.getHeight() == mPreviewHeight) { unusedBitmap = candidate; + mUnusedBitmaps.remove(unusedBitmap); break; } } + } - if (unusedBitmap == null) { - unusedBitmap = Bitmap.createBitmap(mPreviewWidth, mPreviewHeight, Config.ARGB_8888); - } else { - mUnusedBitmaps.remove(unusedBitmap); - } + // creating a bitmap is expensive. Do not do this inside synchronized block. + if (unusedBitmap == null) { + unusedBitmap = Bitmap.createBitmap(mPreviewWidth, mPreviewHeight, Config.ARGB_8888); } // If cancelled now, don't bother reading the preview from the DB if (isCancelled()) { diff --git a/src/com/android/launcher3/widget/WidgetCell.java b/src/com/android/launcher3/widget/WidgetCell.java index 2714f5182..7496ea2ef 100644 --- a/src/com/android/launcher3/widget/WidgetCell.java +++ b/src/com/android/launcher3/widget/WidgetCell.java @@ -26,6 +26,7 @@ import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnLayoutChangeListener; +import android.view.ViewPropertyAnimator; import android.widget.LinearLayout; import android.widget.TextView; @@ -175,7 +176,8 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { if (bitmap != null) { mWidgetImage.setBitmap(bitmap); mWidgetImage.setAlpha(0f); - mWidgetImage.animate().alpha(1.0f).setDuration(FADE_IN_DURATION_MS); + ViewPropertyAnimator anim = mWidgetImage.animate(); + anim.alpha(1.0f).setDuration(FADE_IN_DURATION_MS); } } diff --git a/src/com/android/launcher3/widget/WidgetImageView.java b/src/com/android/launcher3/widget/WidgetImageView.java index 6f8fd897b..b0fbe1ed9 100644 --- a/src/com/android/launcher3/widget/WidgetImageView.java +++ b/src/com/android/launcher3/widget/WidgetImageView.java @@ -64,6 +64,14 @@ public class WidgetImageView extends View { } } + /** + * Prevents the inefficient alpha view rendering. + */ + @Override + public boolean hasOverlappingRendering() { + return false; + } + private void updateDstRectF() { if (mBitmap.getWidth() > getWidth()) { float scale = ((float) getWidth()) / mBitmap.getWidth(); |