summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2016-04-27 10:43:32 +0200
committerStephen Bird <sbird@cyngn.com>2016-05-09 10:24:36 -0700
commitd7f6fbe99751e74c088ab156acad946ca2e97563 (patch)
treec986847b97aa90922982b56825173a72ff73e1fd
parent5e22640c349f9ec16cc4d0162b96140c21f571b5 (diff)
downloadandroid_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.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);
+ }
+ }
+ }
+}