From f96ce0261326d1637e0111eaddde725ed94f2163 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Thu, 9 Aug 2012 15:08:33 -0700 Subject: [PATCH] Some simple skip-layout optimizations for ImageView Mirror the optimization from setImageDrawable into setImageResource and setImageURI where we won't requestLayout() if the drawable's size didn't change. Bug 6359116 Change-Id: Iaae2100f3bddb2737628e31483b471c9e22d945f --- core/java/android/widget/ImageView.java | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java index f259597b8b41f..87396fbc13d07 100644 --- a/core/java/android/widget/ImageView.java +++ b/core/java/android/widget/ImageView.java @@ -342,8 +342,15 @@ public class ImageView extends View { updateDrawable(null); mResource = resId; mUri = null; + + final int oldWidth = mDrawableWidth; + final int oldHeight = mDrawableHeight; + resolveUri(); - requestLayout(); + + if (oldWidth != mDrawableWidth || oldHeight != mDrawableHeight) { + requestLayout(); + } invalidate(); } } @@ -367,8 +374,15 @@ public class ImageView extends View { updateDrawable(null); mResource = 0; mUri = uri; + + final int oldWidth = mDrawableWidth; + final int oldHeight = mDrawableHeight; + resolveUri(); - requestLayout(); + + if (oldWidth != mDrawableWidth || oldHeight != mDrawableHeight) { + requestLayout(); + } invalidate(); } } @@ -383,8 +397,8 @@ public class ImageView extends View { mResource = 0; mUri = null; - int oldWidth = mDrawableWidth; - int oldHeight = mDrawableHeight; + final int oldWidth = mDrawableWidth; + final int oldHeight = mDrawableHeight; updateDrawable(drawable);