summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2016-04-27 10:43:32 +0200
committerGerrit Code Review <gerrit@cyanogenmod.org>2016-05-08 23:28:40 -0700
commitb29eca5a7a5f29fcb66c159d7d133ed575ac2f9f (patch)
tree77a11ab2c8636b360f30073fe421b7f06c0439ad
parentb4f8bc2648691722fc7998d7b394ddfe849d7b08 (diff)
downloadandroid_packages_apps_ContactsCommon-b29eca5a7a5f29fcb66c159d7d133ed575ac2f9f.tar.gz
android_packages_apps_ContactsCommon-b29eca5a7a5f29fcb66c159d7d133ed575ac2f9f.tar.bz2
android_packages_apps_ContactsCommon-b29eca5a7a5f29fcb66c159d7d133ed575ac2f9f.zip
Avoid drawable resources from being scaled.
CheckableFlipDrawable should only scale contact photos, not drawable resources. Change-Id: I63c161c4c5495621d4783ca2bdb92376bb4af43b Ticket: CD-553
-rw-r--r--src/com/android/contacts/common/list/ContactListItemView.java40
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);
+ }
+ }
+ }
+}