Add hairline border to avatars.
This commit is contained in:
parent
f725dd5a7e
commit
5eec3c9541
1 changed files with 40 additions and 3 deletions
|
@ -3,6 +3,9 @@ package org.thoughtcrime.securesms.components;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.Paint;
|
||||||
import android.provider.ContactsContract;
|
import android.provider.ContactsContract;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
|
@ -18,21 +21,42 @@ import org.thoughtcrime.securesms.contacts.avatars.GeneratedContactPhoto;
|
||||||
import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto;
|
import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto;
|
||||||
import org.thoughtcrime.securesms.mms.GlideRequests;
|
import org.thoughtcrime.securesms.mms.GlideRequests;
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||||
|
import org.thoughtcrime.securesms.util.ThemeUtil;
|
||||||
|
|
||||||
public class AvatarImageView extends AppCompatImageView {
|
public class AvatarImageView extends AppCompatImageView {
|
||||||
|
|
||||||
private static final String TAG = AvatarImageView.class.getSimpleName();
|
private static final String TAG = AvatarImageView.class.getSimpleName();
|
||||||
|
|
||||||
private boolean inverted;
|
private static final Paint LIGHT_THEME_OUTLINE_PAINT = new Paint();
|
||||||
private OnClickListener listener = null;
|
private static final Paint DARK_THEME_OUTLINE_PAINT = new Paint();
|
||||||
|
|
||||||
|
static {
|
||||||
|
LIGHT_THEME_OUTLINE_PAINT.setColor(Color.argb((int) (255 * 0.2), 0, 0, 0));
|
||||||
|
LIGHT_THEME_OUTLINE_PAINT.setStyle(Paint.Style.STROKE);
|
||||||
|
LIGHT_THEME_OUTLINE_PAINT.setStrokeWidth(1f);
|
||||||
|
LIGHT_THEME_OUTLINE_PAINT.setAntiAlias(true);
|
||||||
|
|
||||||
|
DARK_THEME_OUTLINE_PAINT.setColor(Color.argb((int) (255 * 0.2), 255, 255, 255));
|
||||||
|
DARK_THEME_OUTLINE_PAINT.setStyle(Paint.Style.STROKE);
|
||||||
|
DARK_THEME_OUTLINE_PAINT.setStrokeWidth(1f);
|
||||||
|
DARK_THEME_OUTLINE_PAINT.setAntiAlias(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean inverted;
|
||||||
|
private Paint outlinePaint;
|
||||||
|
private OnClickListener listener;
|
||||||
|
|
||||||
public AvatarImageView(Context context) {
|
public AvatarImageView(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
setScaleType(ScaleType.CENTER_CROP);
|
initialize(context, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public AvatarImageView(Context context, AttributeSet attrs) {
|
public AvatarImageView(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
|
initialize(context, attrs);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initialize(@NonNull Context context, @Nullable AttributeSet attrs) {
|
||||||
setScaleType(ScaleType.CENTER_CROP);
|
setScaleType(ScaleType.CENTER_CROP);
|
||||||
|
|
||||||
if (attrs != null) {
|
if (attrs != null) {
|
||||||
|
@ -40,6 +64,19 @@ public class AvatarImageView extends AppCompatImageView {
|
||||||
inverted = typedArray.getBoolean(0, false);
|
inverted = typedArray.getBoolean(0, false);
|
||||||
typedArray.recycle();
|
typedArray.recycle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
outlinePaint = ThemeUtil.isDarkTheme(getContext()) ? DARK_THEME_OUTLINE_PAINT : LIGHT_THEME_OUTLINE_PAINT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void dispatchDraw(Canvas canvas) {
|
||||||
|
super.dispatchDraw(canvas);
|
||||||
|
|
||||||
|
float cx = canvas.getWidth() / 2;
|
||||||
|
float cy = canvas.getHeight() / 2;
|
||||||
|
float radius = (canvas.getWidth() / 2) - (outlinePaint.getStrokeWidth() / 2);
|
||||||
|
|
||||||
|
canvas.drawCircle(cx, cy, radius, outlinePaint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Add table
Reference in a new issue