aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/services/AvatarService.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-04-23 21:13:12 +0200
committerChristian Schneppe <christian@pix-art.de>2018-04-23 21:13:12 +0200
commit80064f6040cab219702d8221a052eace5f47661c (patch)
tree67c0676deebe0a6f899989eac3a96db5f4f2a167 /src/main/java/de/pixart/messenger/services/AvatarService.java
parent44cf4a0ecbfef6303872316d20e4b18444f6932f (diff)
support contact shortcuts
* support contact shortcuts * make ShortcutActivity extends AbstractSearchableListItemActivity * Draw the app icon in the corner of the icon and modify the name of the widget * updated label and icon size
Diffstat (limited to '')
-rw-r--r--src/main/java/de/pixart/messenger/services/AvatarService.java35
1 files changed, 32 insertions, 3 deletions
diff --git a/src/main/java/de/pixart/messenger/services/AvatarService.java b/src/main/java/de/pixart/messenger/services/AvatarService.java
index e7096a558..766c2e240 100644
--- a/src/main/java/de/pixart/messenger/services/AvatarService.java
+++ b/src/main/java/de/pixart/messenger/services/AvatarService.java
@@ -1,6 +1,8 @@
package de.pixart.messenger.services;
+import android.content.res.Resources;
import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
@@ -21,6 +23,7 @@ import java.util.Locale;
import java.util.Set;
import de.pixart.messenger.Config;
+import de.pixart.messenger.R;
import de.pixart.messenger.entities.Account;
import de.pixart.messenger.entities.Bookmark;
import de.pixart.messenger.entities.Contact;
@@ -80,21 +83,47 @@ public class AvatarService implements OnAdvancedStreamFeaturesLoaded {
}
public Bitmap getRoundedShortcut(final Contact contact) {
+ return getRoundedShortcut(contact, false);
+ }
+
+ public Bitmap getRoundedShortcutWithIcon(final Contact contact) {
+ return getRoundedShortcut(contact, true);
+ }
+
+ private Bitmap getRoundedShortcut(final Contact contact, boolean withIcon) {
DisplayMetrics metrics = mXmppConnectionService.getResources().getDisplayMetrics();
int size = Math.round(metrics.density * 48);
Bitmap bitmap = get(contact, size);
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
-
final Paint paint = new Paint();
- final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
+ drawAvatar(bitmap, canvas, paint);
+ if (withIcon) {
+ drawIcon(canvas, paint);
+ }
+ return output;
+ }
+ private void drawAvatar(Bitmap bitmap, Canvas canvas, Paint paint) {
+ final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getWidth() / 2, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
- return output;
+ }
+
+ private void drawIcon(Canvas canvas, Paint paint) {
+ BitmapFactory.Options opts = new BitmapFactory.Options();
+ opts.inSampleSize = 3;
+ Resources resources = mXmppConnectionService.getResources();
+ Bitmap icon = BitmapFactory.decodeResource(resources, R.drawable.ic_launcher, opts);
+ paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
+
+ int left = canvas.getWidth() - icon.getWidth();
+ int top = canvas.getHeight() - icon.getHeight();
+ final Rect rect = new Rect(left, top, left + icon.getWidth(), top + icon.getHeight());
+ canvas.drawBitmap(icon, null, rect, paint);
}
public Bitmap get(final MucOptions.User user, final int size, boolean cachedOnly) {