diff options
| author | Bjorn Bringert <bringert@android.com> | 2010-01-06 22:52:41 +0000 |
|---|---|---|
| committer | Bjorn Bringert <bringert@android.com> | 2010-01-06 22:52:41 +0000 |
| commit | 9d8d9c22bb98e656cb2e42673c4ba801821c4e5d (patch) | |
| tree | 3d4fda7e240b626a08841ed081bb13f3efbe2ae7 /core/java/android/widget/ImageView.java | |
| parent | e0a8efd8747f4f8b0d0cc986239dda77021ea918 (diff) | |
Get correct density info when using resource URIs in ImageView
Before, when an android.resource URI was passed to
ImageView.setImageURI(), it was loaded through an InputStream.
This didn't get the density information correctly.
Instead, we use Resources to load the Drawable, which fixes
the denisty problem.
Change-Id: Ie8427ea04da43f414b49014d012671fc0aa27a30
Diffstat (limited to 'core/java/android/widget/ImageView.java')
| -rw-r--r-- | core/java/android/widget/ImageView.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java index 8f2404125ddd..38533593a3db 100644 --- a/core/java/android/widget/ImageView.java +++ b/core/java/android/widget/ImageView.java @@ -491,8 +491,16 @@ public class ImageView extends View { } } else if (mUri != null) { String scheme = mUri.getScheme(); - if (ContentResolver.SCHEME_CONTENT.equals(scheme) - || ContentResolver.SCHEME_ANDROID_RESOURCE.equals(scheme) + if (ContentResolver.SCHEME_ANDROID_RESOURCE.equals(scheme)) { + try { + // Load drawable through Resources, to get the source density information + ContentResolver.OpenResourceIdResult r = + mContext.getContentResolver().getResourceId(mUri); + d = r.r.getDrawable(r.id); + } catch (Exception e) { + Log.w("ImageView", "Unable to open content: " + mUri, e); + } + } else if (ContentResolver.SCHEME_CONTENT.equals(scheme) || ContentResolver.SCHEME_FILE.equals(scheme)) { try { d = Drawable.createFromStream( |
