diff options
author | Yorke Lee <yorkelee@google.com> | 2014-11-18 19:39:51 -0800 |
---|---|---|
committer | Yorke Lee <yorkelee@google.com> | 2014-11-18 19:39:51 -0800 |
commit | 96d17e40f8437ee7143c0c9003cce7735a03bb39 (patch) | |
tree | 3ab30f8f3cef28f80626850b7a3849b4f0cceba5 /InCallUI/src/com/android/incallui/ContactInfoCache.java | |
parent | 3e8ec5a893aa5286c280fc8113a9d72855874c04 (diff) |
Improve setting of contact photos in InCallUI
Add drawable caching in CallCardFragment so that we don't set
the same drawable multiple times.
Save and reuse the default contact photo and default conference
photo to avoid possibly decoding them multiple times.
Bug: 18373617
Change-Id: I54b925e6fc6f136f3d3ef27609fcdaf4c39a73dd
Diffstat (limited to 'InCallUI/src/com/android/incallui/ContactInfoCache.java')
-rw-r--r-- | InCallUI/src/com/android/incallui/ContactInfoCache.java | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/InCallUI/src/com/android/incallui/ContactInfoCache.java b/InCallUI/src/com/android/incallui/ContactInfoCache.java index f8bd38d2b..49621695b 100644 --- a/InCallUI/src/com/android/incallui/ContactInfoCache.java +++ b/InCallUI/src/com/android/incallui/ContactInfoCache.java @@ -57,6 +57,9 @@ public class ContactInfoCache implements ContactsAsyncHelper.OnImageLoadComplete private static ContactInfoCache sCache = null; + private Drawable mDefaultContactPhotoDrawable; + private Drawable mConferencePhotoDrawable; + public static synchronized ContactInfoCache getInstance(Context mContext) { if (sCache == null) { sCache = new ContactInfoCache(mContext.getApplicationContext()); @@ -316,12 +319,10 @@ public class ContactInfoCache implements ContactsAsyncHelper.OnImageLoadComplete if (info.cachedPhoto != null) { photo = info.cachedPhoto; } else { - photo = context.getResources().getDrawable(R.drawable.img_no_image); - photo.setAutoMirrored(true); + photo = getDefaultContactPhotoDrawable(); } } else if (info.contactDisplayPhotoUri == null) { - photo = context.getResources().getDrawable(R.drawable.img_no_image); - photo.setAutoMirrored(true); + photo = getDefaultContactPhotoDrawable(); } else { cce.displayPhotoUri = info.contactDisplayPhotoUri; } @@ -491,6 +492,22 @@ public class ContactInfoCache implements ContactsAsyncHelper.OnImageLoadComplete return name; } + public Drawable getDefaultContactPhotoDrawable() { + if (mDefaultContactPhotoDrawable == null) { + mDefaultContactPhotoDrawable = + mContext.getResources().getDrawable(R.drawable.img_no_image_automirrored); + } + return mDefaultContactPhotoDrawable; + } + + public Drawable getConferenceDrawable() { + if (mConferencePhotoDrawable == null) { + mConferencePhotoDrawable = + mContext.getResources().getDrawable(R.drawable.img_conference_automirrored); + } + return mConferencePhotoDrawable; + } + /** * Callback interface for the contact query. */ |