diff options
author | Danny Baumann <dannybaumann@web.de> | 2016-04-27 10:43:32 +0200 |
---|---|---|
committer | Stephen Bird <sbird@cyngn.com> | 2016-05-09 10:24:36 -0700 |
commit | d7f6fbe99751e74c088ab156acad946ca2e97563 (patch) | |
tree | c986847b97aa90922982b56825173a72ff73e1fd | |
parent | 5e22640c349f9ec16cc4d0162b96140c21f571b5 (diff) | |
download | android_packages_apps_ContactsCommon-d7f6fbe99751e74c088ab156acad946ca2e97563.tar.gz android_packages_apps_ContactsCommon-d7f6fbe99751e74c088ab156acad946ca2e97563.tar.bz2 android_packages_apps_ContactsCommon-d7f6fbe99751e74c088ab156acad946ca2e97563.zip |
Avoid drawable resources from being scaled.
CheckableFlipDrawable should only scale contact photos, not drawable
resources.
Change-Id: I63c161c4c5495621d4783ca2bdb92376bb4af43b
Ticket: CD-553
(cherry picked from commit b29eca5a7a5f29fcb66c159d7d133ed575ac2f9f)
-rw-r--r-- | src/com/android/contacts/common/list/ContactListItemView.java | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/src/com/android/contacts/common/list/ContactListItemView.java b/src/com/android/contacts/common/list/ContactListItemView.java index e6bc563a..3d5e9add 100644 --- a/src/com/android/contacts/common/list/ContactListItemView.java +++ b/src/com/android/contacts/common/list/ContactListItemView.java @@ -26,6 +26,7 @@ import android.graphics.Color; import android.graphics.Rect; import android.graphics.Typeface; import android.graphics.drawable.Drawable; +import android.graphics.drawable.DrawableWrapper; import android.os.Bundle; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; @@ -1523,8 +1524,7 @@ public class ContactListItemView extends ViewGroup */ public void setDrawableResource(int drawableId) { ImageView photo = getPhotoView(); - photo.setScaleType(ImageView.ScaleType.CENTER); - photo.setImageDrawable(getContext().getDrawable(drawableId)); + photo.setImageDrawable(new UnscaledDrawableWrapper(getContext().getDrawable(drawableId))); photo.setImageTintList(ColorStateList.valueOf( getContext().getColor(R.color.search_shortcut_icon_color))); } @@ -1557,4 +1557,38 @@ public class ContactListItemView extends ViewGroup return localX >= mLeftOffset && localX < mRightOffset && localY >= 0 && localY < (getBottom() - getTop()); } -}
\ No newline at end of file + + private static class UnscaledDrawableWrapper extends DrawableWrapper { + private Rect mTmpRect = new Rect(); + + public UnscaledDrawableWrapper(Drawable drawable) { + super(drawable); + } + + @Override + public int getIntrinsicWidth() { + return -1; + } + + @Override + public int getIntrinsicHeight() { + return -1; + } + + @Override + protected void onBoundsChange(Rect bounds) { + final Drawable d = getDrawable(); + final Rect r = mTmpRect; + + int w = d.getIntrinsicWidth(); + int h = d.getIntrinsicHeight(); + + if (w <= 0 || h <= 0) { + d.setBounds(bounds); + } else { + Gravity.apply(Gravity.CENTER, w, h, bounds, r, getLayoutDirection()); + d.setBounds(r.left, r.top, r.right, r.bottom); + } + } + } +} |