added card preview blur

This commit is contained in:
nuclearfog 2023-07-03 23:25:48 +02:00
parent ecd833546e
commit 645a653c74
No known key found for this signature in database
GPG Key ID: 03488A185C476379
4 changed files with 31 additions and 1 deletions

View File

@ -22,6 +22,7 @@ public class MastodonCard implements Card {
private String description;
private String url;
private String imageLink;
private String blurHash;
/**
* @param json Mastodon card json
@ -31,6 +32,7 @@ public class MastodonCard implements Card {
url = json.getString("url");
title = json.optString("title", "");
description = json.optString("description", "");
blurHash = json.optString("blurhash");
if (Patterns.WEB_URL.matcher(imageLink).matches()) {
this.imageLink = imageLink;
} else {
@ -63,6 +65,12 @@ public class MastodonCard implements Card {
}
@Override
public String getBlurHash() {
return blurHash;
}
@Override
public boolean equals(@Nullable Object obj) {
if (!(obj instanceof Card))

View File

@ -68,6 +68,12 @@ public class TwitterCard implements Card {
}
@Override
public String getBlurHash() {
return "";
}
@Override
public boolean equals(@Nullable Object obj) {
if (!(obj instanceof Card))

View File

@ -28,4 +28,9 @@ public interface Card extends Serializable {
* @return preview image link (may be empty)
*/
String getImageUrl();
/**
* @return blur hash string of the preview image
*/
String getBlurHash();
}

View File

@ -1,7 +1,9 @@
package org.nuclearfog.twidda.ui.adapter.holder;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.text.SpannableStringBuilder;
@ -19,6 +21,8 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.squareup.picasso.MemoryPolicy;
import com.squareup.picasso.NetworkPolicy;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.RequestCreator;
import com.wolt.blurhashkt.BlurHashDecoder;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.image.PicassoBuilder;
@ -101,7 +105,14 @@ public class CardHolder extends ViewHolder implements OnClickListener {
Drawable placeholder = new ColorDrawable(EMPTY_COLOR);
// set url preview image
if (settings.imagesEnabled() && !card.getImageUrl().isEmpty()) {
picasso.load(card.getImageUrl()).networkPolicy(NetworkPolicy.NO_STORE).memoryPolicy(MemoryPolicy.NO_STORE).placeholder(placeholder).into(preview);
RequestCreator picassoBuilder = picasso.load(card.getImageUrl());
if (!card.getBlurHash().isEmpty()) {
Bitmap blur = BlurHashDecoder.INSTANCE.decode(card.getBlurHash(), 16, 16, 1f, true);
picassoBuilder.placeholder(new BitmapDrawable(preview.getResources(), blur));
} else {
picassoBuilder.placeholder(placeholder);
}
picassoBuilder.networkPolicy(NetworkPolicy.NO_STORE).memoryPolicy(MemoryPolicy.NO_STORE).into(preview);
} else {
preview.setImageDrawable(placeholder);
}