Fix avatar blurring during calls.

This commit is contained in:
Alex Hart
2023-07-07 14:50:50 -03:00
parent 1d6f4fd4e7
commit f628ffca06
2 changed files with 19 additions and 9 deletions

View File

@@ -14,6 +14,9 @@ import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.IconCompat;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.request.target.CustomViewTarget;
import com.bumptech.glide.request.transition.Transition;
@@ -57,8 +60,7 @@ public final class AvatarUtil {
GlideApp.with(target)
.load(photo)
.transform(new BlurTransformation(context, 0.25f, BlurTransformation.MAX_RADIUS))
.centerCrop()
.transform(new BlurTransformation(context, 0.25f, BlurTransformation.MAX_RADIUS), new CenterCrop())
.into(new CustomViewTarget<View, Drawable>(target) {
@Override
public void onLoadFailed(@Nullable Drawable errorDrawable) {
@@ -140,18 +142,18 @@ public final class AvatarUtil {
}
private static <T> GlideRequest<T> requestCircle(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient, int targetSize) {
return request(glideRequest, context, recipient, targetSize).circleCrop();
return request(glideRequest, context, recipient, targetSize, new CircleCrop());
}
private static <T> GlideRequest<T> requestSquare(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient) {
return request(glideRequest, context, recipient, UNDEFINED_SIZE).centerCrop();
return request(glideRequest, context, recipient, UNDEFINED_SIZE, new CenterCrop());
}
private static <T> GlideRequest<T> request(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient, int targetSize) {
return request(glideRequest, context, recipient, true, targetSize);
private static <T> GlideRequest<T> request(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient, int targetSize, @Nullable BitmapTransformation transformation) {
return request(glideRequest, context, recipient, true, targetSize, transformation);
}
private static <T> GlideRequest<T> request(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient, boolean loadSelf, int targetSize) {
private static <T> GlideRequest<T> request(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient, boolean loadSelf, int targetSize, @Nullable BitmapTransformation transformation) {
final ContactPhoto photo;
if (Recipient.self().equals(recipient) && loadSelf) {
photo = new ProfileContactPhoto(recipient);
@@ -164,7 +166,14 @@ public final class AvatarUtil {
.diskCacheStrategy(DiskCacheStrategy.ALL);
if (recipient.shouldBlurAvatar()) {
return request.transform(new BlurTransformation(context, 0.25f, BlurTransformation.MAX_RADIUS));
BlurTransformation blur = new BlurTransformation(context, 0.25f, BlurTransformation.MAX_RADIUS);
if (transformation != null) {
return request.transform(blur, transformation);
} else {
return request.transform(blur);
}
} else if (transformation != null) {
return request.transform(transformation);
} else {
return request;
}

View File

@@ -20,6 +20,7 @@ import java.util.Locale;
public final class BlurTransformation extends BitmapTransformation {
private static final int VERSION = 1;
public static final float MAX_RADIUS = 25f;
private final RenderScript rs;
@@ -58,6 +59,6 @@ public final class BlurTransformation extends BitmapTransformation {
@Override
public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update(String.format(Locale.US, "blur-%f-%f", bitmapScaleFactor, blurRadius).getBytes());
messageDigest.update(String.format(Locale.US, "blur-%f-%f-%d", bitmapScaleFactor, blurRadius, VERSION).getBytes());
}
}