summaryrefslogtreecommitdiff
path: root/core/java/android/widget/ImageView.java
diff options
context:
space:
mode:
authorBjorn Bringert <bringert@android.com>2010-01-06 22:52:41 +0000
committerBjorn Bringert <bringert@android.com>2010-01-06 22:52:41 +0000
commit9d8d9c22bb98e656cb2e42673c4ba801821c4e5d (patch)
tree3d4fda7e240b626a08841ed081bb13f3efbe2ae7 /core/java/android/widget/ImageView.java
parente0a8efd8747f4f8b0d0cc986239dda77021ea918 (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.java12
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(