Version 5.1.9-beta1. Fix low resolution post previews when showing them for the first time in PostDetailRecyclerViewAdapter.

This commit is contained in:
Docile-Alligator 2022-03-06 15:09:57 +08:00
parent 141abc654a
commit 53755d4381
3 changed files with 35 additions and 10 deletions

View File

@ -6,8 +6,8 @@ android {
applicationId "ml.docilealligator.infinityforreddit"
minSdkVersion 21
targetSdkVersion 30
versionCode 93
versionName "5.1.8"
versionCode 94
versionName "5.1.9-beta1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {

View File

@ -187,7 +187,7 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
((DataViewHolder) holder).subjectTextView.setText(subject);
mMarkwon.setMarkdown(((DataViewHolder) holder).contentCustomMarkwonView, displayedMessage.getBody());
((DataViewHolder) holder).itemView.setOnClickListener(view -> {
holder.itemView.setOnClickListener(view -> {
if (mMessageType == FetchMessage.MESSAGE_TYPE_INBOX
&& message.getContext() != null && !message.getContext().equals("")) {
Uri uri = Uri.parse(message.getContext());
@ -202,7 +202,7 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
}
if (displayedMessage.isNew()) {
((DataViewHolder) holder).itemView.setBackgroundColor(mMessageBackgroundColor);
holder.itemView.setBackgroundColor(mMessageBackgroundColor);
message.setNew(false);
ReadMessage.readMessage(mOauthRetrofit, mAccessToken, message.getFullname(),
@ -214,7 +214,7 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
@Override
public void readFailed() {
message.setNew(true);
((DataViewHolder) holder).itemView.setBackgroundColor(mUnreadMessageBackgroundColor);
holder.itemView.setBackgroundColor(mUnreadMessageBackgroundColor);
}
});
}
@ -228,7 +228,7 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
((DataViewHolder) holder).contentCustomMarkwonView.setOnClickListener(view -> {
if (((DataViewHolder) holder).contentCustomMarkwonView.getSelectionStart() == -1 && ((DataViewHolder) holder).contentCustomMarkwonView.getSelectionEnd() == -1) {
((DataViewHolder) holder).itemView.performClick();
holder.itemView.performClick();
}
});
}

View File

@ -19,6 +19,7 @@ import android.text.util.Linkify;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
@ -717,8 +718,14 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
Post.Preview preview = getSuitablePreview(mPost.getPreviews());
if (preview != null) {
((PostDetailVideoAndGifPreviewHolder) holder).mImageView.setRatio((float) preview.getPreviewHeight() / (float) preview.getPreviewWidth());
((PostDetailVideoAndGifPreviewHolder) holder).mImageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
((PostDetailVideoAndGifPreviewHolder) holder).mImageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
loadImage((PostDetailVideoAndGifPreviewHolder) holder, preview);
}
});
}
} else if (holder instanceof PostDetailImageAndGifAutoplayViewHolder) {
if (!mHidePostType) {
if (mPost.getPostType() == Post.IMAGE_TYPE) {
@ -737,16 +744,28 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
} else {
((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.setRatio((float) preview.getPreviewHeight() / (float) preview.getPreviewWidth());
}
((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
loadImage((PostDetailImageAndGifAutoplayViewHolder) holder, preview);
}
});
}
} else if (holder instanceof PostDetailLinkViewHolder) {
String domain = Uri.parse(mPost.getUrl()).getHost();
((PostDetailLinkViewHolder) holder).mLinkTextView.setText(domain);
Post.Preview preview = getSuitablePreview(mPost.getPreviews());
if (preview != null) {
((PostDetailLinkViewHolder) holder).mImageView.setRatio((float) preview.getPreviewHeight() / (float) preview.getPreviewWidth());
((PostDetailLinkViewHolder) holder).mImageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
((PostDetailLinkViewHolder) holder).mImageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
loadImage((PostDetailLinkViewHolder) holder, preview);
}
});
}
} else if (holder instanceof PostDetailNoPreviewViewHolder) {
if (mPost.getPostType() == Post.LINK_TYPE || mPost.getPostType() == Post.NO_PREVIEW_LINK_TYPE) {
@ -812,7 +831,13 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
((PostDetailGalleryViewHolder) holder).mImageView
.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
((PostDetailGalleryViewHolder) holder).mImageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
((PostDetailGalleryViewHolder) holder).mImageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
loadImage((PostDetailGalleryViewHolder) holder, preview);
}
});
loadCaptionPreview((PostDetailGalleryViewHolder) holder, preview);
} else {