OSDN Git Service

Ensure ImageView.setImageResource() always resolves Drawable
authorAlan Viverette <alanv@google.com>
Thu, 30 Oct 2014 00:26:37 +0000 (17:26 -0700)
committerAlan Viverette <alanv@google.com>
Thu, 30 Oct 2014 00:26:37 +0000 (17:26 -0700)
Fixes no-op on method call after configuration change at the expense
of removing a micro-optimization that wasn't really needed.

BUG: 18178233
Change-Id: I36eccf91b138e4bed34be96d9b87200edeb66938

core/java/android/widget/ImageView.java

index 1ac4dd8..c68bfca 100644 (file)
@@ -386,21 +386,21 @@ public class ImageView extends View {
      */
     @android.view.RemotableViewMethod
     public void setImageResource(int resId) {
-        if (mUri != null || mResource != resId) {
-            final int oldWidth = mDrawableWidth;
-            final int oldHeight = mDrawableHeight;
+        // The resource configuration may have changed, so we should always
+        // try to load the resource even if the resId hasn't changed.
+        final int oldWidth = mDrawableWidth;
+        final int oldHeight = mDrawableHeight;
 
-            updateDrawable(null);
-            mResource = resId;
-            mUri = null;
+        updateDrawable(null);
+        mResource = resId;
+        mUri = null;
 
-            resolveUri();
+        resolveUri();
 
-            if (oldWidth != mDrawableWidth || oldHeight != mDrawableHeight) {
-                requestLayout();
-            }
-            invalidate();
+        if (oldWidth != mDrawableWidth || oldHeight != mDrawableHeight) {
+            requestLayout();
         }
+        invalidate();
     }
 
     /**