Improved use of default avatar + use thumbnail instead of full picture when avatar is small to improve scroll speed
This commit is contained in:
parent
6122078e30
commit
41bbf3592c
10 changed files with 31 additions and 19 deletions
|
@ -1327,7 +1327,7 @@ public class CallActivity extends LinphoneGenericActivity implements OnClickList
|
||||||
LinphoneContact lContact = ContactsManager.getInstance().findContactFromAddress(lAddress);
|
LinphoneContact lContact = ContactsManager.getInstance().findContactFromAddress(lAddress);
|
||||||
if (lContact == null) {
|
if (lContact == null) {
|
||||||
contactName.setText(LinphoneUtils.getAddressDisplayName(lAddress));
|
contactName.setText(LinphoneUtils.getAddressDisplayName(lAddress));
|
||||||
contactPicture.setImageResource(R.drawable.avatar);
|
contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
} else {
|
} else {
|
||||||
contactName.setText(lContact.getFullName());
|
contactName.setText(lContact.getFullName());
|
||||||
LinphoneUtils.setImagePictureFromUri(contactPicture.getContext(), contactPicture, lContact.getPhotoUri(), lContact.getThumbnailUri());
|
LinphoneUtils.setImagePictureFromUri(contactPicture.getContext(), contactPicture, lContact.getPhotoUri(), lContact.getThumbnailUri());
|
||||||
|
|
|
@ -1110,15 +1110,15 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
displayName = contact.getFullName();
|
displayName = contact.getFullName();
|
||||||
}
|
}
|
||||||
if (contact.hasPhoto()) {
|
if (contact.hasPhoto()) {
|
||||||
LinphoneUtils.setImagePictureFromUri(getActivity(), holder.contactPicture, contact.getPhotoUri(), contact.getThumbnailUri());
|
LinphoneUtils.setThumbnailPictureFromUri(getActivity(), holder.contactPicture, contact.getThumbnailUri());
|
||||||
} else {
|
} else {
|
||||||
holder.contactPicture.setImageResource(R.drawable.avatar);
|
holder.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
holder.contactPicture.setImageResource(R.drawable.avatar);
|
holder.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
holder.contactPicture.setImageResource(R.drawable.avatar);
|
holder.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
}
|
}
|
||||||
holder.contactName.setText(timestampToHumanDate(context, message.getTime()) + " - " + displayName);
|
holder.contactName.setText(timestampToHumanDate(context, message.getTime()) + " - " + displayName);
|
||||||
|
|
||||||
|
|
|
@ -422,9 +422,9 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
|
||||||
|
|
||||||
|
|
||||||
if (contact != null) {
|
if (contact != null) {
|
||||||
LinphoneUtils.setImagePictureFromUri(getActivity(), holder.contactPicture, contact.getPhotoUri(), contact.getThumbnailUri());
|
LinphoneUtils.setThumbnailPictureFromUri(getActivity(), holder.contactPicture, contact.getThumbnailUri());
|
||||||
} else {
|
} else {
|
||||||
holder.contactPicture.setImageResource(R.drawable.avatar);
|
holder.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unreadMessagesCount > 0) {
|
if (unreadMessagesCount > 0) {
|
||||||
|
|
|
@ -107,7 +107,7 @@ public class ContactDetailsFragment extends Fragment implements OnClickListener
|
||||||
if (contact.hasPhoto()) {
|
if (contact.hasPhoto()) {
|
||||||
LinphoneUtils.setImagePictureFromUri(getActivity(), contactPicture, contact.getPhotoUri(), contact.getThumbnailUri());
|
LinphoneUtils.setImagePictureFromUri(getActivity(), contactPicture, contact.getPhotoUri(), contact.getThumbnailUri());
|
||||||
} else {
|
} else {
|
||||||
contactPicture.setImageResource(R.drawable.avatar);
|
contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
}
|
}
|
||||||
|
|
||||||
TextView contactName = (TextView) view.findViewById(R.id.contact_name);
|
TextView contactName = (TextView) view.findViewById(R.id.contact_name);
|
||||||
|
|
|
@ -261,7 +261,7 @@ public class ContactEditorFragment extends Fragment {
|
||||||
if (contact != null) {
|
if (contact != null) {
|
||||||
LinphoneUtils.setImagePictureFromUri(getActivity(), contactPicture, contact.getPhotoUri(), contact.getThumbnailUri());
|
LinphoneUtils.setImagePictureFromUri(getActivity(), contactPicture, contact.getPhotoUri(), contact.getThumbnailUri());
|
||||||
} else {
|
} else {
|
||||||
contactPicture.setImageResource(R.drawable.avatar);
|
contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
}
|
}
|
||||||
|
|
||||||
contactPicture.setOnClickListener(new OnClickListener() {
|
contactPicture.setOnClickListener(new OnClickListener() {
|
||||||
|
|
|
@ -524,9 +524,9 @@ public class ContactsListFragment extends Fragment implements OnClickListener, O
|
||||||
}
|
}
|
||||||
|
|
||||||
if (contact.hasPhoto()) {
|
if (contact.hasPhoto()) {
|
||||||
LinphoneUtils.setImagePictureFromUri(getActivity(), holder.contactPicture, contact.getPhotoUri(), contact.getThumbnailUri());
|
LinphoneUtils.setThumbnailPictureFromUri(getActivity(), holder.contactPicture, contact.getThumbnailUri());
|
||||||
} else {
|
} else {
|
||||||
holder.contactPicture.setImageResource(R.drawable.avatar);
|
holder.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isOrgVisible = getResources().getBoolean(R.bool.display_contact_organization);
|
boolean isOrgVisible = getResources().getBoolean(R.bool.display_contact_organization);
|
||||||
|
|
|
@ -43,6 +43,8 @@ import android.content.Context;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.database.MatrixCursor;
|
import android.database.MatrixCursor;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.BitmapFactory;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
@ -64,6 +66,7 @@ public class ContactsManager extends ContentObserver {
|
||||||
private ContactsFetchTask contactsFetchTask;
|
private ContactsFetchTask contactsFetchTask;
|
||||||
private HashMap<String, LinphoneContact> contactsCache;
|
private HashMap<String, LinphoneContact> contactsCache;
|
||||||
private LinphoneContact contactNotFound;
|
private LinphoneContact contactNotFound;
|
||||||
|
private Bitmap defaultAvatar;
|
||||||
|
|
||||||
private static ArrayList<ContactsUpdatedListener> contactsUpdatedListeners;
|
private static ArrayList<ContactsUpdatedListener> contactsUpdatedListeners;
|
||||||
public static void addContactsListener(ContactsUpdatedListener listener) {
|
public static void addContactsListener(ContactsUpdatedListener listener) {
|
||||||
|
@ -82,6 +85,7 @@ public class ContactsManager extends ContentObserver {
|
||||||
|
|
||||||
private ContactsManager(Handler handler) {
|
private ContactsManager(Handler handler) {
|
||||||
super(handler);
|
super(handler);
|
||||||
|
defaultAvatar = BitmapFactory.decodeResource(LinphoneService.instance().getResources(), R.drawable.avatar);
|
||||||
contactNotFound = new LinphoneContact();
|
contactNotFound = new LinphoneContact();
|
||||||
contactsCache = new HashMap<String, LinphoneContact>();
|
contactsCache = new HashMap<String, LinphoneContact>();
|
||||||
contactsUpdatedListeners = new ArrayList<ContactsUpdatedListener>();
|
contactsUpdatedListeners = new ArrayList<ContactsUpdatedListener>();
|
||||||
|
@ -93,9 +97,15 @@ public class ContactsManager extends ContentObserver {
|
||||||
if (contactsFetchTask != null && !contactsFetchTask.isCancelled()) {
|
if (contactsFetchTask != null && !contactsFetchTask.isCancelled()) {
|
||||||
contactsFetchTask.cancel(true);
|
contactsFetchTask.cancel(true);
|
||||||
}
|
}
|
||||||
|
defaultAvatar.recycle();
|
||||||
instance = null;
|
instance = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Bitmap getDefaultAvatarBitmap() {
|
||||||
|
return defaultAvatar;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChange(boolean selfChange) {
|
public void onChange(boolean selfChange) {
|
||||||
onChange(selfChange, null);
|
onChange(selfChange, null);
|
||||||
|
|
|
@ -121,7 +121,7 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener {
|
||||||
goToContact.setVisibility(View.VISIBLE);
|
goToContact.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
contactName.setText(displayName == null ? LinphoneUtils.getAddressDisplayName(sipUri) : displayName);
|
contactName.setText(displayName == null ? LinphoneUtils.getAddressDisplayName(sipUri) : displayName);
|
||||||
contactPicture.setImageResource(R.drawable.avatar);
|
contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
addToContacts.setVisibility(View.VISIBLE);
|
addToContacts.setVisibility(View.VISIBLE);
|
||||||
goToContact.setVisibility(View.GONE);
|
goToContact.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -473,9 +473,9 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On
|
||||||
final String sipUri = address.asString();
|
final String sipUri = address.asString();
|
||||||
if (c != null) {
|
if (c != null) {
|
||||||
displayName = c.getFullName();
|
displayName = c.getFullName();
|
||||||
LinphoneUtils.setImagePictureFromUri(getActivity(), holder.contactPicture, c.getPhotoUri(), c.getThumbnailUri());
|
LinphoneUtils.setThumbnailPictureFromUri(getActivity(), holder.contactPicture, c.getThumbnailUri());
|
||||||
} else {
|
} else {
|
||||||
holder.contactPicture.setImageResource(R.drawable.avatar);
|
holder.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (displayName == null) {
|
if (displayName == null) {
|
||||||
|
|
|
@ -229,8 +229,8 @@ public final class LinphoneUtils {
|
||||||
|
|
||||||
|
|
||||||
public static void setImagePictureFromUri(Context c, ImageView view, Uri pictureUri, Uri thumbnailUri) {
|
public static void setImagePictureFromUri(Context c, ImageView view, Uri pictureUri, Uri thumbnailUri) {
|
||||||
if (pictureUri == null) {
|
if (pictureUri == null && thumbnailUri == null) {
|
||||||
view.setImageResource(R.drawable.avatar);
|
view.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (pictureUri.getScheme().startsWith("http")) {
|
if (pictureUri.getScheme().startsWith("http")) {
|
||||||
|
@ -252,14 +252,14 @@ public final class LinphoneUtils {
|
||||||
if (bm != null) {
|
if (bm != null) {
|
||||||
view.setImageBitmap(bm);
|
view.setImageBitmap(bm);
|
||||||
} else {
|
} else {
|
||||||
view.setImageResource(R.drawable.avatar);
|
view.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setThumbnailPictureFromUri(Context c, ImageView view, Uri tUri) {
|
public static void setThumbnailPictureFromUri(Context c, ImageView view, Uri tUri) {
|
||||||
if (tUri == null) {
|
if (tUri == null) {
|
||||||
view.setImageResource(R.drawable.avatar);
|
view.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (tUri.getScheme().startsWith("http")) {
|
if (tUri.getScheme().startsWith("http")) {
|
||||||
|
@ -273,8 +273,10 @@ public final class LinphoneUtils {
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
view.setImageURI(tUri);
|
view.setImageURI(tUri);
|
||||||
}
|
}
|
||||||
if(bm != null) {
|
if (bm != null) {
|
||||||
view.setImageBitmap(bm);
|
view.setImageBitmap(bm);
|
||||||
|
} else {
|
||||||
|
view.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue