mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-03-27 20:15:28 +01:00
Faster Post parsing
This commit dramatically increases post parsing and loading times. However, posts on the home screen with images are bugged.
This commit is contained in:
parent
4c95404fe1
commit
7cc4e93ad4
@ -42,7 +42,9 @@ import com.bumptech.glide.load.DataSource;
|
|||||||
import com.bumptech.glide.load.engine.GlideException;
|
import com.bumptech.glide.load.engine.GlideException;
|
||||||
import com.bumptech.glide.request.RequestListener;
|
import com.bumptech.glide.request.RequestListener;
|
||||||
import com.bumptech.glide.request.RequestOptions;
|
import com.bumptech.glide.request.RequestOptions;
|
||||||
|
import com.bumptech.glide.request.target.CustomTarget;
|
||||||
import com.bumptech.glide.request.target.Target;
|
import com.bumptech.glide.request.target.Target;
|
||||||
|
import com.bumptech.glide.request.transition.Transition;
|
||||||
import com.google.android.exoplayer2.Tracks;
|
import com.google.android.exoplayer2.Tracks;
|
||||||
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
|
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
|
||||||
import com.google.android.exoplayer2.ui.DefaultTimeBar;
|
import com.google.android.exoplayer2.ui.DefaultTimeBar;
|
||||||
@ -634,8 +636,20 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
((PostDetailVideoAutoplayViewHolder) holder).previewImageView.setVisibility(View.VISIBLE);
|
((PostDetailVideoAutoplayViewHolder) holder).previewImageView.setVisibility(View.VISIBLE);
|
||||||
Post.Preview preview = getSuitablePreview(mPost.getPreviews());
|
Post.Preview preview = getSuitablePreview(mPost.getPreviews());
|
||||||
if (preview != null) {
|
if (preview != null) {
|
||||||
((PostDetailVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) preview.getPreviewWidth() / preview.getPreviewHeight());
|
mGlide.load(preview.getPreviewUrl()).centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(new CustomTarget<Drawable>() {
|
||||||
mGlide.load(preview.getPreviewUrl()).centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(((PostDetailVideoAutoplayViewHolder) holder).previewImageView);
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
((PostDetailVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) width / height);
|
||||||
|
((PostDetailVideoAutoplayViewHolder) holder).previewImageView.setImageDrawable(resource);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
((PostDetailVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio(1);
|
((PostDetailVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio(1);
|
||||||
}
|
}
|
||||||
@ -843,9 +857,45 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (blurImage) {
|
if (blurImage) {
|
||||||
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10))).into(((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView);
|
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10))).into(new CustomTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
if (preview.getPreviewHeight() == 0 || preview.getPreviewWidth() == 0) {
|
||||||
|
((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.setRatio((float) height / width);
|
||||||
|
((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
}
|
||||||
|
((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.setImageDrawable(resource);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.setImageDrawable(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
imageRequestBuilder.centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView);
|
imageRequestBuilder.centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(new CustomTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
if (preview.getPreviewHeight() == 0 || preview.getPreviewWidth() == 0) {
|
||||||
|
((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.setRatio((float) height / width);
|
||||||
|
((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
}
|
||||||
|
((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.setImageDrawable(resource);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.setImageDrawable(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
} else if (holder instanceof PostDetailVideoAndGifPreviewHolder) {
|
} else if (holder instanceof PostDetailVideoAndGifPreviewHolder) {
|
||||||
RequestBuilder<Drawable> imageRequestBuilder = mGlide.load(preview.getPreviewUrl())
|
RequestBuilder<Drawable> imageRequestBuilder = mGlide.load(preview.getPreviewUrl())
|
||||||
@ -871,9 +921,45 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
|
|
||||||
if ((mPost.isNSFW() && mNeedBlurNsfw && !(mDoNotBlurNsfwInNsfwSubreddits && mFragment != null && mFragment.getIsNsfwSubreddit()))) {
|
if ((mPost.isNSFW() && mNeedBlurNsfw && !(mDoNotBlurNsfwInNsfwSubreddits && mFragment != null && mFragment.getIsNsfwSubreddit()))) {
|
||||||
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10)))
|
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10)))
|
||||||
.into(((PostDetailVideoAndGifPreviewHolder) holder).mImageView);
|
.into(new CustomTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
if (preview.getPreviewHeight() == 0 || preview.getPreviewWidth() == 0) {
|
||||||
|
((PostDetailVideoAndGifPreviewHolder) holder).mImageView.setRatio((float) height / width);
|
||||||
|
((PostDetailVideoAndGifPreviewHolder) holder).mImageView.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
}
|
||||||
|
((PostDetailVideoAndGifPreviewHolder) holder).mImageView.setImageDrawable(resource);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
((PostDetailVideoAndGifPreviewHolder) holder).mImageView.setImageDrawable(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
imageRequestBuilder.centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(((PostDetailVideoAndGifPreviewHolder) holder).mImageView);
|
imageRequestBuilder.centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(new CustomTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
if (preview.getPreviewHeight() == 0 || preview.getPreviewWidth() == 0) {
|
||||||
|
((PostDetailVideoAndGifPreviewHolder) holder).mImageView.setRatio((float) height / width);
|
||||||
|
((PostDetailVideoAndGifPreviewHolder) holder).mImageView.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
}
|
||||||
|
((PostDetailVideoAndGifPreviewHolder) holder).mImageView.setImageDrawable(resource);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
((PostDetailVideoAndGifPreviewHolder) holder).mImageView.setImageDrawable(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
} else if (holder instanceof PostDetailLinkViewHolder) {
|
} else if (holder instanceof PostDetailLinkViewHolder) {
|
||||||
RequestBuilder<Drawable> imageRequestBuilder = mGlide.load(preview.getPreviewUrl())
|
RequestBuilder<Drawable> imageRequestBuilder = mGlide.load(preview.getPreviewUrl())
|
||||||
@ -899,9 +985,51 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
|
|
||||||
if ((mPost.isNSFW() && mNeedBlurNsfw && !(mDoNotBlurNsfwInNsfwSubreddits && mFragment != null && mFragment.getIsNsfwSubreddit()))) {
|
if ((mPost.isNSFW() && mNeedBlurNsfw && !(mDoNotBlurNsfwInNsfwSubreddits && mFragment != null && mFragment.getIsNsfwSubreddit()))) {
|
||||||
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10)))
|
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10)))
|
||||||
.into(((PostDetailLinkViewHolder) holder).mImageView);
|
.into(new CustomTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
if (preview.getPreviewHeight() == 0 || preview.getPreviewWidth() == 0) {
|
||||||
|
((PostDetailLinkViewHolder) holder).mImageView.setRatio((float) height / width);
|
||||||
|
((PostDetailLinkViewHolder) holder).mImageView.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
} else {
|
||||||
|
((PostDetailLinkViewHolder) holder).mImageView.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
||||||
|
((PostDetailLinkViewHolder) holder).mImageView.getLayoutParams().height = height;
|
||||||
|
}
|
||||||
|
((PostDetailLinkViewHolder) holder).mImageView.setImageDrawable(resource);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
((PostDetailLinkViewHolder) holder).mImageView.setImageDrawable(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
imageRequestBuilder.centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(((PostDetailLinkViewHolder) holder).mImageView);
|
imageRequestBuilder.centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(new CustomTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
((PostDetailLinkViewHolder) holder).mImageView.setImageDrawable(resource);
|
||||||
|
if (preview.getPreviewHeight() == 0 || preview.getPreviewWidth() == 0) {
|
||||||
|
((PostDetailLinkViewHolder) holder).mImageView.setRatio((float) height / width);
|
||||||
|
((PostDetailLinkViewHolder) holder).mImageView.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
} else {
|
||||||
|
((PostDetailLinkViewHolder) holder).mImageView.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
((PostDetailLinkViewHolder) holder).mImageView.setImageDrawable(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ import android.view.MotionEvent;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewConfiguration;
|
import android.view.ViewConfiguration;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.view.ViewTreeObserver;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
@ -41,10 +42,13 @@ import com.bumptech.glide.Glide;
|
|||||||
import com.bumptech.glide.RequestBuilder;
|
import com.bumptech.glide.RequestBuilder;
|
||||||
import com.bumptech.glide.RequestManager;
|
import com.bumptech.glide.RequestManager;
|
||||||
import com.bumptech.glide.load.DataSource;
|
import com.bumptech.glide.load.DataSource;
|
||||||
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||||
import com.bumptech.glide.load.engine.GlideException;
|
import com.bumptech.glide.load.engine.GlideException;
|
||||||
import com.bumptech.glide.request.RequestListener;
|
import com.bumptech.glide.request.RequestListener;
|
||||||
import com.bumptech.glide.request.RequestOptions;
|
import com.bumptech.glide.request.RequestOptions;
|
||||||
|
import com.bumptech.glide.request.target.CustomTarget;
|
||||||
import com.bumptech.glide.request.target.Target;
|
import com.bumptech.glide.request.target.Target;
|
||||||
|
import com.bumptech.glide.request.transition.Transition;
|
||||||
import com.google.android.exoplayer2.Tracks;
|
import com.google.android.exoplayer2.Tracks;
|
||||||
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
|
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
|
||||||
import com.google.android.exoplayer2.ui.DefaultTimeBar;
|
import com.google.android.exoplayer2.ui.DefaultTimeBar;
|
||||||
@ -439,7 +443,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
switch (post.getPostType()) {
|
switch (post.getPostType()) {
|
||||||
case Post.VIDEO_TYPE:
|
case Post.VIDEO_TYPE:
|
||||||
if (mAutoplay) {
|
if (mAutoplay) {
|
||||||
if ((!mAutoplayNsfwVideos && post.isNSFW()) ) {
|
if ((!mAutoplayNsfwVideos && post.isNSFW())) {
|
||||||
return VIEW_TYPE_POST_CARD_2_WITH_PREVIEW_TYPE;
|
return VIEW_TYPE_POST_CARD_2_WITH_PREVIEW_TYPE;
|
||||||
}
|
}
|
||||||
return VIEW_TYPE_POST_CARD_2_VIDEO_AUTOPLAY_TYPE;
|
return VIEW_TYPE_POST_CARD_2_VIDEO_AUTOPLAY_TYPE;
|
||||||
@ -524,7 +528,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
|
|
||||||
((PostBaseViewHolder) holder).titleTextView.setTextColor(mReadPostTitleColor);
|
((PostBaseViewHolder) holder).titleTextView.setTextColor(mReadPostTitleColor);
|
||||||
}
|
}
|
||||||
String authorPrefixed = post.getAuthorNamePrefixed();
|
String authorPrefixed = post.getAuthorNamePrefixed();
|
||||||
|
|
||||||
if (mHideSubredditAndUserPrefix) {
|
if (mHideSubredditAndUserPrefix) {
|
||||||
((PostBaseViewHolder) holder).subredditTextView.setText(post.getSubredditName());
|
((PostBaseViewHolder) holder).subredditTextView.setText(post.getSubredditName());
|
||||||
@ -714,8 +718,28 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
((PostVideoAutoplayViewHolder) holder).previewImageView.setVisibility(View.VISIBLE);
|
((PostVideoAutoplayViewHolder) holder).previewImageView.setVisibility(View.VISIBLE);
|
||||||
Post.Preview preview = getSuitablePreview(post.getPreviews());
|
Post.Preview preview = getSuitablePreview(post.getPreviews());
|
||||||
if (!mFixedHeightPreviewInCard && preview != null) {
|
if (!mFixedHeightPreviewInCard && preview != null) {
|
||||||
((PostVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) preview.getPreviewWidth() / preview.getPreviewHeight());
|
mGlide.load(preview.getPreviewUrl()).centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(new CustomTarget<Drawable>() {
|
||||||
mGlide.load(preview.getPreviewUrl()).centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(((PostVideoAutoplayViewHolder) holder).previewImageView);
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
((PostVideoAutoplayViewHolder) holder).previewImageView.setImageDrawable(resource);
|
||||||
|
if (preview.getPreviewHeight() <= 0 || preview.getPreviewWidth() <= 0) {
|
||||||
|
((PostVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) height / width);
|
||||||
|
((PostVideoAutoplayViewHolder) holder).previewImageView.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
} else {
|
||||||
|
((PostVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
||||||
|
((PostVideoAutoplayViewHolder) holder).previewImageView.getLayoutParams().height = preview.getPreviewHeight();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
((PostVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio(1);
|
((PostVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio(1);
|
||||||
}
|
}
|
||||||
@ -752,7 +776,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if(post.isStreamable() && !post.isLoadGfycatOrStreamableVideoSuccess()) {
|
} else if (post.isStreamable() && !post.isLoadGfycatOrStreamableVideoSuccess()) {
|
||||||
((PostVideoAutoplayViewHolder) holder).fetchGfycatOrStreamableVideoCall =
|
((PostVideoAutoplayViewHolder) holder).fetchGfycatOrStreamableVideoCall =
|
||||||
mStreamableApiProvider.get().getStreamableData(post.getStreamableShortCode());
|
mStreamableApiProvider.get().getStreamableData(post.getStreamableShortCode());
|
||||||
FetchStreamableVideo.fetchStreamableVideoInRecyclerViewAdapter(mExecutor, new Handler(),
|
FetchStreamableVideo.fetchStreamableVideoInRecyclerViewAdapter(mExecutor, new Handler(),
|
||||||
@ -833,13 +857,10 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
if (preview != null) {
|
if (preview != null) {
|
||||||
((PostWithPreviewTypeViewHolder) holder).imageView.setVisibility(View.VISIBLE);
|
((PostWithPreviewTypeViewHolder) holder).imageView.setVisibility(View.VISIBLE);
|
||||||
((PostWithPreviewTypeViewHolder) holder).imageWrapperRelativeLayout.setVisibility(View.VISIBLE);
|
((PostWithPreviewTypeViewHolder) holder).imageWrapperRelativeLayout.setVisibility(View.VISIBLE);
|
||||||
if (mFixedHeightPreviewInCard || (preview.getPreviewWidth() <= 0 || preview.getPreviewHeight() <= 0)) {
|
if (mFixedHeightPreviewInCard) {
|
||||||
int height = (int) (400 * mScale);
|
int height = (int) (400 * mScale);
|
||||||
((PostWithPreviewTypeViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
((PostWithPreviewTypeViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||||
((PostWithPreviewTypeViewHolder) holder).imageView.getLayoutParams().height = height;
|
((PostWithPreviewTypeViewHolder) holder).imageView.getLayoutParams().height = height;
|
||||||
} else {
|
|
||||||
((PostWithPreviewTypeViewHolder) holder).imageView
|
|
||||||
.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
|
||||||
}
|
}
|
||||||
((PostWithPreviewTypeViewHolder) holder).imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
((PostWithPreviewTypeViewHolder) holder).imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -873,10 +894,8 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
((PostBaseGalleryTypeViewHolder) holder).imageIndexTextView.setText(mActivity.getString(R.string.image_index_in_gallery, 1, post.getGallery().size()));
|
((PostBaseGalleryTypeViewHolder) holder).imageIndexTextView.setText(mActivity.getString(R.string.image_index_in_gallery, 1, post.getGallery().size()));
|
||||||
Post.Preview preview = getSuitablePreview(post.getPreviews());
|
Post.Preview preview = getSuitablePreview(post.getPreviews());
|
||||||
if (preview != null) {
|
if (preview != null) {
|
||||||
if (mFixedHeightPreviewInCard || (preview.getPreviewWidth() <= 0 || preview.getPreviewHeight() <= 0)) {
|
if (mFixedHeightPreviewInCard) {
|
||||||
((PostBaseGalleryTypeViewHolder) holder).adapter.setRatio(-1);
|
((PostBaseGalleryTypeViewHolder) holder).adapter.setRatio(-1);
|
||||||
} else {
|
|
||||||
((PostBaseGalleryTypeViewHolder) holder).adapter.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
((PostBaseGalleryTypeViewHolder) holder).adapter.setRatio(-1);
|
((PostBaseGalleryTypeViewHolder) holder).adapter.setRatio(-1);
|
||||||
@ -886,7 +905,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
(post.isNSFW() && mNeedBlurNsfw && !(mDoNotBlurNsfwInNsfwSubreddits && mFragment != null && mFragment.getIsNsfwSubreddit())));
|
(post.isNSFW() && mNeedBlurNsfw && !(mDoNotBlurNsfwInNsfwSubreddits && mFragment != null && mFragment.getIsNsfwSubreddit())));
|
||||||
}
|
}
|
||||||
} else if (holder instanceof PostTextTypeViewHolder) {
|
} else if (holder instanceof PostTextTypeViewHolder) {
|
||||||
if (!mHideTextPostContent && post.getSelfTextPlainTrimmed() != null && !post.getSelfTextPlainTrimmed().equals("")) {
|
if (!mHideTextPostContent && post.getSelfTextPlainTrimmed() != null && !post.getSelfTextPlainTrimmed().equals("")) {
|
||||||
((PostTextTypeViewHolder) holder).contentTextView.setVisibility(View.VISIBLE);
|
((PostTextTypeViewHolder) holder).contentTextView.setVisibility(View.VISIBLE);
|
||||||
if (post.isRead()) {
|
if (post.isRead()) {
|
||||||
((PostTextTypeViewHolder) holder).contentTextView.setTextColor(mReadPostContentColor);
|
((PostTextTypeViewHolder) holder).contentTextView.setTextColor(mReadPostContentColor);
|
||||||
@ -897,8 +916,28 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
((PostCard2VideoAutoplayViewHolder) holder).previewImageView.setVisibility(View.VISIBLE);
|
((PostCard2VideoAutoplayViewHolder) holder).previewImageView.setVisibility(View.VISIBLE);
|
||||||
Post.Preview preview = getSuitablePreview(post.getPreviews());
|
Post.Preview preview = getSuitablePreview(post.getPreviews());
|
||||||
if (!mFixedHeightPreviewInCard && preview != null) {
|
if (!mFixedHeightPreviewInCard && preview != null) {
|
||||||
((PostCard2VideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) preview.getPreviewWidth() / preview.getPreviewHeight());
|
mGlide.load(preview.getPreviewUrl()).centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(new CustomTarget<Drawable>() {
|
||||||
mGlide.load(preview.getPreviewUrl()).centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(((PostCard2VideoAutoplayViewHolder) holder).previewImageView);
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
((PostVideoAutoplayViewHolder) holder).previewImageView.setImageDrawable(resource);
|
||||||
|
if (preview.getPreviewHeight() <= 0 || preview.getPreviewWidth() <= 0) {
|
||||||
|
((PostVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) height / width);
|
||||||
|
((PostVideoAutoplayViewHolder) holder).previewImageView.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
} else {
|
||||||
|
((PostVideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
||||||
|
((PostVideoAutoplayViewHolder) holder).previewImageView.getLayoutParams().height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
((PostCard2VideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio(1);
|
((PostCard2VideoAutoplayViewHolder) holder).aspectRatioFrameLayout.setAspectRatio(1);
|
||||||
}
|
}
|
||||||
@ -935,7 +974,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if(post.isStreamable() && !post.isLoadGfycatOrStreamableVideoSuccess()) {
|
} else if (post.isStreamable() && !post.isLoadGfycatOrStreamableVideoSuccess()) {
|
||||||
((PostCard2VideoAutoplayViewHolder) holder).fetchGfycatOrStreamableVideoCall =
|
((PostCard2VideoAutoplayViewHolder) holder).fetchGfycatOrStreamableVideoCall =
|
||||||
mStreamableApiProvider.get().getStreamableData(post.getStreamableShortCode());
|
mStreamableApiProvider.get().getStreamableData(post.getStreamableShortCode());
|
||||||
FetchStreamableVideo.fetchStreamableVideoInRecyclerViewAdapter(mExecutor, new Handler(),
|
FetchStreamableVideo.fetchStreamableVideoInRecyclerViewAdapter(mExecutor, new Handler(),
|
||||||
@ -1023,13 +1062,10 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
((PostCard2WithPreviewViewHolder) holder).preview = preview;
|
((PostCard2WithPreviewViewHolder) holder).preview = preview;
|
||||||
if (preview != null) {
|
if (preview != null) {
|
||||||
((PostCard2WithPreviewViewHolder) holder).imageView.setVisibility(View.VISIBLE);
|
((PostCard2WithPreviewViewHolder) holder).imageView.setVisibility(View.VISIBLE);
|
||||||
if (mFixedHeightPreviewInCard || (preview.getPreviewWidth() <= 0 || preview.getPreviewHeight() <= 0)) {
|
if (mFixedHeightPreviewInCard) {
|
||||||
int height = (int) (400 * mScale);
|
int height = (int) (400 * mScale);
|
||||||
((PostCard2WithPreviewViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
((PostCard2WithPreviewViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||||
((PostCard2WithPreviewViewHolder) holder).imageView.getLayoutParams().height = height;
|
((PostCard2WithPreviewViewHolder) holder).imageView.getLayoutParams().height = height;
|
||||||
} else {
|
|
||||||
((PostCard2WithPreviewViewHolder) holder).imageView
|
|
||||||
.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
|
||||||
}
|
}
|
||||||
((PostCard2WithPreviewViewHolder) holder).imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
((PostCard2WithPreviewViewHolder) holder).imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -1078,7 +1114,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
}
|
}
|
||||||
final String subredditNamePrefixed = post.getSubredditNamePrefixed();
|
final String subredditNamePrefixed = post.getSubredditNamePrefixed();
|
||||||
String subredditName = subredditNamePrefixed.substring(2);
|
String subredditName = subredditNamePrefixed.substring(2);
|
||||||
String authorPrefixed = post.getAuthorNamePrefixed();
|
String authorPrefixed = post.getAuthorNamePrefixed();
|
||||||
final String title = post.getTitle();
|
final String title = post.getTitle();
|
||||||
int voteType = post.getVoteType();
|
int voteType = post.getVoteType();
|
||||||
boolean nsfw = post.isNSFW();
|
boolean nsfw = post.isNSFW();
|
||||||
@ -1401,13 +1437,10 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
((PostGalleryViewHolder) holder).imageView.setVisibility(View.VISIBLE);
|
((PostGalleryViewHolder) holder).imageView.setVisibility(View.VISIBLE);
|
||||||
((PostGalleryViewHolder) holder).progressBar.setVisibility(View.VISIBLE);
|
((PostGalleryViewHolder) holder).progressBar.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
if (mFixedHeightPreviewInCard || (preview.getPreviewWidth() <= 0 || preview.getPreviewHeight() <= 0)) {
|
if (mFixedHeightPreviewInCard) {
|
||||||
int height = (int) (400 * mScale);
|
int height = (int) (400 * mScale);
|
||||||
((PostGalleryViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
((PostGalleryViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||||
((PostGalleryViewHolder) holder).imageView.getLayoutParams().height = height;
|
((PostGalleryViewHolder) holder).imageView.getLayoutParams().height = height;
|
||||||
} else {
|
|
||||||
((PostGalleryViewHolder) holder).imageView
|
|
||||||
.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
|
||||||
}
|
}
|
||||||
((PostGalleryViewHolder) holder).imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
((PostGalleryViewHolder) holder).imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -1423,7 +1456,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Post.GIF_TYPE: {
|
case Post.GIF_TYPE: {
|
||||||
if (post.getPostType() == Post.GIF_TYPE && ((post.isNSFW() && mNeedBlurNsfw && !(mDoNotBlurNsfwInNsfwSubreddits && mFragment != null && mFragment.getIsNsfwSubreddit()) && !(mAutoplay && mAutoplayNsfwVideos)) )) {
|
if (post.getPostType() == Post.GIF_TYPE && ((post.isNSFW() && mNeedBlurNsfw && !(mDoNotBlurNsfwInNsfwSubreddits && mFragment != null && mFragment.getIsNsfwSubreddit()) && !(mAutoplay && mAutoplayNsfwVideos)))) {
|
||||||
((PostGalleryViewHolder) holder).noPreviewImageView.setVisibility(View.VISIBLE);
|
((PostGalleryViewHolder) holder).noPreviewImageView.setVisibility(View.VISIBLE);
|
||||||
((PostGalleryViewHolder) holder).noPreviewImageView.setImageResource(R.drawable.ic_image_24dp);
|
((PostGalleryViewHolder) holder).noPreviewImageView.setImageResource(R.drawable.ic_image_24dp);
|
||||||
} else {
|
} else {
|
||||||
@ -1435,13 +1468,10 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
((PostGalleryViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.VISIBLE);
|
((PostGalleryViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.VISIBLE);
|
||||||
((PostGalleryViewHolder) holder).videoOrGifIndicatorImageView.setImageDrawable(ContextCompat.getDrawable(mActivity, R.drawable.ic_play_circle_36dp));
|
((PostGalleryViewHolder) holder).videoOrGifIndicatorImageView.setImageDrawable(ContextCompat.getDrawable(mActivity, R.drawable.ic_play_circle_36dp));
|
||||||
|
|
||||||
if (mFixedHeightPreviewInCard || (preview.getPreviewWidth() <= 0 || preview.getPreviewHeight() <= 0)) {
|
if (mFixedHeightPreviewInCard) {
|
||||||
int height = (int) (400 * mScale);
|
int height = (int) (400 * mScale);
|
||||||
((PostGalleryViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
((PostGalleryViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||||
((PostGalleryViewHolder) holder).imageView.getLayoutParams().height = height;
|
((PostGalleryViewHolder) holder).imageView.getLayoutParams().height = height;
|
||||||
} else {
|
|
||||||
((PostGalleryViewHolder) holder).imageView
|
|
||||||
.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
|
||||||
}
|
}
|
||||||
((PostGalleryViewHolder) holder).imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
((PostGalleryViewHolder) holder).imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -1466,13 +1496,10 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
((PostGalleryViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.VISIBLE);
|
((PostGalleryViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.VISIBLE);
|
||||||
((PostGalleryViewHolder) holder).videoOrGifIndicatorImageView.setImageDrawable(ContextCompat.getDrawable(mActivity, R.drawable.ic_play_circle_36dp));
|
((PostGalleryViewHolder) holder).videoOrGifIndicatorImageView.setImageDrawable(ContextCompat.getDrawable(mActivity, R.drawable.ic_play_circle_36dp));
|
||||||
|
|
||||||
if (mFixedHeightPreviewInCard || (preview.getPreviewWidth() <= 0 || preview.getPreviewHeight() <= 0)) {
|
if (mFixedHeightPreviewInCard) {
|
||||||
int height = (int) (400 * mScale);
|
int height = (int) (400 * mScale);
|
||||||
((PostGalleryViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
((PostGalleryViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||||
((PostGalleryViewHolder) holder).imageView.getLayoutParams().height = height;
|
((PostGalleryViewHolder) holder).imageView.getLayoutParams().height = height;
|
||||||
} else {
|
|
||||||
((PostGalleryViewHolder) holder).imageView
|
|
||||||
.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
|
||||||
}
|
}
|
||||||
((PostGalleryViewHolder) holder).imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
((PostGalleryViewHolder) holder).imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -1496,13 +1523,10 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
((PostGalleryViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.VISIBLE);
|
((PostGalleryViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.VISIBLE);
|
||||||
((PostGalleryViewHolder) holder).videoOrGifIndicatorImageView.setImageDrawable(ContextCompat.getDrawable(mActivity, R.drawable.ic_link_post_type_indicator));
|
((PostGalleryViewHolder) holder).videoOrGifIndicatorImageView.setImageDrawable(ContextCompat.getDrawable(mActivity, R.drawable.ic_link_post_type_indicator));
|
||||||
|
|
||||||
if (mFixedHeightPreviewInCard || (preview.getPreviewWidth() <= 0 || preview.getPreviewHeight() <= 0)) {
|
if (mFixedHeightPreviewInCard) {
|
||||||
int height = (int) (400 * mScale);
|
int height = (int) (400 * mScale);
|
||||||
((PostGalleryViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
((PostGalleryViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||||
((PostGalleryViewHolder) holder).imageView.getLayoutParams().height = height;
|
((PostGalleryViewHolder) holder).imageView.getLayoutParams().height = height;
|
||||||
} else {
|
|
||||||
((PostGalleryViewHolder) holder).imageView
|
|
||||||
.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
|
||||||
}
|
}
|
||||||
((PostGalleryViewHolder) holder).imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
((PostGalleryViewHolder) holder).imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -1549,10 +1573,8 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
((PostGalleryBaseGalleryTypeViewHolder) holder).frameLayout.setVisibility(View.VISIBLE);
|
((PostGalleryBaseGalleryTypeViewHolder) holder).frameLayout.setVisibility(View.VISIBLE);
|
||||||
((PostGalleryBaseGalleryTypeViewHolder) holder).imageIndexTextView.setText(mActivity.getString(R.string.image_index_in_gallery, 1, post.getGallery().size()));
|
((PostGalleryBaseGalleryTypeViewHolder) holder).imageIndexTextView.setText(mActivity.getString(R.string.image_index_in_gallery, 1, post.getGallery().size()));
|
||||||
if (preview != null) {
|
if (preview != null) {
|
||||||
if (mFixedHeightPreviewInCard || (preview.getPreviewWidth() <= 0 || preview.getPreviewHeight() <= 0)) {
|
if (mFixedHeightPreviewInCard) {
|
||||||
((PostGalleryBaseGalleryTypeViewHolder) holder).adapter.setRatio(-1);
|
((PostGalleryBaseGalleryTypeViewHolder) holder).adapter.setRatio(-1);
|
||||||
} else {
|
|
||||||
((PostGalleryBaseGalleryTypeViewHolder) holder).adapter.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
((PostGalleryBaseGalleryTypeViewHolder) holder).adapter.setRatio(-1);
|
((PostGalleryBaseGalleryTypeViewHolder) holder).adapter.setRatio(-1);
|
||||||
@ -1605,9 +1627,79 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
RequestBuilder<Drawable> imageRequestBuilder = mGlide.load(url).listener(((PostWithPreviewTypeViewHolder) holder).glideRequestListener);
|
RequestBuilder<Drawable> imageRequestBuilder = mGlide.load(url).listener(((PostWithPreviewTypeViewHolder) holder).glideRequestListener);
|
||||||
if (blurImage) {
|
if (blurImage) {
|
||||||
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10)))
|
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10)))
|
||||||
.into(((PostWithPreviewTypeViewHolder) holder).imageView);
|
.into(new CustomTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onLoadStarted(@Nullable Drawable placeholder) {
|
||||||
|
mGlide.clear(((PostWithPreviewTypeViewHolder) holder).imageView);
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.setVisibility(View.GONE);
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).progressBar.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.setImageDrawable(resource);
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
if (!mFixedHeightPreviewInCard) {
|
||||||
|
if (preview.getPreviewHeight() <= 0 || preview.getPreviewWidth() <= 0) {
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.setRatio((float) height / width);
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.getLayoutParams().height = height;
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageWrapperRelativeLayout.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
} else {
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.getLayoutParams().height = preview.getPreviewHeight();
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageWrapperRelativeLayout.getLayoutParams().height = preview.getPreviewHeight();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.setRatio(-1);
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.getLayoutParams().height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.setImageDrawable(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
imageRequestBuilder.centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(((PostWithPreviewTypeViewHolder) holder).imageView);
|
mGlide.load(post.getPreviews().get(0).getPreviewUrl()).diskCacheStrategy(DiskCacheStrategy.NONE).into(new CustomTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onLoadStarted(@Nullable Drawable placeholder) {
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.setVisibility(View.GONE);
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).progressBar.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.setImageDrawable(resource);
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.setAdjustViewBounds(true);
|
||||||
|
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onPreDraw() {
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.getViewTreeObserver().removeOnPreDrawListener(this);
|
||||||
|
|
||||||
|
// Calculate the aspect ratio and set the height
|
||||||
|
float aspectRatio = (float) height / width;
|
||||||
|
int imageViewWidth = ((PostWithPreviewTypeViewHolder) holder).imageView.getWidth();
|
||||||
|
int imageViewHeight = Math.round(imageViewWidth * aspectRatio);
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.getLayoutParams().height = ((PostWithPreviewTypeViewHolder) holder).imageView.getHeight();
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.requestLayout();
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).imageView.setVisibility(View.VISIBLE);
|
||||||
|
((PostWithPreviewTypeViewHolder) holder).progressBar.setVisibility(View.GONE);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (holder instanceof PostCompactBaseViewHolder) {
|
} else if (holder instanceof PostCompactBaseViewHolder) {
|
||||||
@ -1645,9 +1737,53 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
|
|
||||||
if (blurImage) {
|
if (blurImage) {
|
||||||
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10)))
|
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10)))
|
||||||
.into(((PostGalleryViewHolder) holder).imageView);
|
.into(new CustomTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
((PostGalleryViewHolder) holder).imageView.setImageDrawable(resource);
|
||||||
|
if (preview.getPreviewHeight() <= 0 || preview.getPreviewWidth() <= 0) {
|
||||||
|
((PostGalleryViewHolder) holder).imageView.setRatio((float) height / width);
|
||||||
|
((PostGalleryViewHolder) holder).imageView.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
} else {
|
||||||
|
((PostGalleryViewHolder) holder).imageView.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
((PostGalleryViewHolder) holder).imageView.setImageDrawable(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
imageRequestBuilder.centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(((PostGalleryViewHolder) holder).imageView);
|
imageRequestBuilder.centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(new CustomTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
((PostGalleryViewHolder) holder).imageView.setImageDrawable(resource);
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
if (!mFixedHeightPreviewInCard) {
|
||||||
|
if (preview.getPreviewHeight() <= 0 || preview.getPreviewWidth() <= 0) {
|
||||||
|
((PostGalleryViewHolder) holder).imageView.setRatio((float) height / width);
|
||||||
|
((PostGalleryViewHolder) holder).imageView.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
} else {
|
||||||
|
((PostGalleryViewHolder) holder).imageView.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
((PostGalleryViewHolder) holder).imageView.setRatio(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
((PostGalleryViewHolder) holder).imageView.setImageDrawable(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (holder instanceof PostCard2WithPreviewViewHolder) {
|
} else if (holder instanceof PostCard2WithPreviewViewHolder) {
|
||||||
@ -1665,9 +1801,57 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
|
|
||||||
if (blurImage) {
|
if (blurImage) {
|
||||||
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10)))
|
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10)))
|
||||||
.into(((PostCard2WithPreviewViewHolder) holder).imageView);
|
.into(new CustomTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
((PostCard2WithPreviewViewHolder) holder).imageView.setImageDrawable(resource);
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
if (!mFixedHeightPreviewInCard) {
|
||||||
|
if (preview.getPreviewHeight() <= 0 || preview.getPreviewWidth() <= 0) {
|
||||||
|
((PostCard2WithPreviewViewHolder) holder).imageView.setRatio((float) height / width);
|
||||||
|
((PostCard2WithPreviewViewHolder) holder).imageView.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
} else {
|
||||||
|
((PostCard2WithPreviewViewHolder) holder).imageView.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
((PostCard2WithPreviewViewHolder) holder).imageView.setRatio(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
((PostCard2WithPreviewViewHolder) holder).imageView.setImageDrawable(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
imageRequestBuilder.centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(((PostCard2WithPreviewViewHolder) holder).imageView);
|
imageRequestBuilder.centerInside().downsample(mSaveMemoryCenterInsideDownsampleStrategy).into(new CustomTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
((PostCard2WithPreviewViewHolder) holder).imageView.setImageDrawable(resource);
|
||||||
|
int width = resource.getIntrinsicWidth();
|
||||||
|
int height = resource.getIntrinsicHeight();
|
||||||
|
if (!mFixedHeightPreviewInCard) {
|
||||||
|
if (preview.getPreviewHeight() <= 0 || preview.getPreviewWidth() <= 0) {
|
||||||
|
((PostCard2WithPreviewViewHolder) holder).imageView.setRatio((float) height / width);
|
||||||
|
((PostCard2WithPreviewViewHolder) holder).imageView.getLayoutParams().height = height;
|
||||||
|
preview.setPreviewHeight(height);
|
||||||
|
preview.setPreviewWidth(width);
|
||||||
|
} else {
|
||||||
|
((PostCard2WithPreviewViewHolder) holder).imageView.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
((PostCard2WithPreviewViewHolder) holder).imageView.setRatio(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadCleared(@Nullable Drawable placeholder) {
|
||||||
|
((PostCard2WithPreviewViewHolder) holder).imageView.setImageDrawable(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3307,7 +3491,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
downY = e.getRawY();
|
downY = e.getRawY();
|
||||||
break;
|
break;
|
||||||
case MotionEvent.ACTION_MOVE:
|
case MotionEvent.ACTION_MOVE:
|
||||||
if(Math.abs(e.getRawX() - downX) > minTouchSlop || Math.abs(e.getRawY() - downY) > minTouchSlop) {
|
if (Math.abs(e.getRawX() - downX) > minTouchSlop || Math.abs(e.getRawY() - downY) > minTouchSlop) {
|
||||||
dragged = true;
|
dragged = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -3510,21 +3694,21 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setBaseView(AspectRatioGifImageView iconGifImageView,
|
void setBaseView(AspectRatioGifImageView iconGifImageView,
|
||||||
TextView nameTextView, ImageView stickiedPostImageView,
|
TextView nameTextView, ImageView stickiedPostImageView,
|
||||||
TextView postTimeTextView, ConstraintLayout titleAndImageConstraintLayout,
|
TextView postTimeTextView, ConstraintLayout titleAndImageConstraintLayout,
|
||||||
TextView titleTextView, CustomTextView typeTextView,
|
TextView titleTextView, CustomTextView typeTextView,
|
||||||
ImageView archivedImageView, ImageView lockedImageView,
|
ImageView archivedImageView, ImageView lockedImageView,
|
||||||
ImageView crosspostImageView, CustomTextView nsfwTextView,
|
ImageView crosspostImageView, CustomTextView nsfwTextView,
|
||||||
CustomTextView spoilerTextView, CustomTextView flairTextView,
|
CustomTextView spoilerTextView, CustomTextView flairTextView,
|
||||||
CustomTextView awardsTextView, TextView linkTextView,
|
CustomTextView awardsTextView, TextView linkTextView,
|
||||||
RelativeLayout relativeLayout, ProgressBar progressBar,
|
RelativeLayout relativeLayout, ProgressBar progressBar,
|
||||||
ImageView imageView, ImageView playButtonImageView,
|
ImageView imageView, ImageView playButtonImageView,
|
||||||
FrameLayout noPreviewLinkImageFrameLayout,
|
FrameLayout noPreviewLinkImageFrameLayout,
|
||||||
ImageView noPreviewLinkImageView, Barrier imageBarrier,
|
ImageView noPreviewLinkImageView, Barrier imageBarrier,
|
||||||
ConstraintLayout bottomConstraintLayout, ImageView upvoteButton,
|
ConstraintLayout bottomConstraintLayout, ImageView upvoteButton,
|
||||||
TextView scoreTextView, ImageView downvoteButton,
|
TextView scoreTextView, ImageView downvoteButton,
|
||||||
TextView commentsCountTextView, ImageView saveButton,
|
TextView commentsCountTextView, ImageView saveButton,
|
||||||
ImageView shareButton, View divider) {
|
ImageView shareButton, View divider) {
|
||||||
this.iconGifImageView = iconGifImageView;
|
this.iconGifImageView = iconGifImageView;
|
||||||
this.nameTextView = nameTextView;
|
this.nameTextView = nameTextView;
|
||||||
this.stickiedPostImageView = stickiedPostImageView;
|
this.stickiedPostImageView = stickiedPostImageView;
|
||||||
@ -4419,7 +4603,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
|||||||
downTime = System.currentTimeMillis();
|
downTime = System.currentTimeMillis();
|
||||||
break;
|
break;
|
||||||
case MotionEvent.ACTION_MOVE:
|
case MotionEvent.ACTION_MOVE:
|
||||||
if(Math.abs(e.getRawX() - downX) > minTouchSlop || Math.abs(e.getRawY() - downY) > minTouchSlop) {
|
if (Math.abs(e.getRawX() - downX) > minTouchSlop || Math.abs(e.getRawY() - downY) > minTouchSlop) {
|
||||||
dragged = true;
|
dragged = true;
|
||||||
}
|
}
|
||||||
if (!dragged) {
|
if (!dragged) {
|
||||||
|
@ -5,7 +5,6 @@ import static java.lang.Integer.max;
|
|||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.StrictMode;
|
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@ -191,8 +190,8 @@ public class ParsePost {
|
|||||||
ArrayList <Post.Preview> previews = new ArrayList<>();
|
ArrayList <Post.Preview> previews = new ArrayList<>();
|
||||||
if(!post.isNull("thumbnail_url")) {
|
if(!post.isNull("thumbnail_url")) {
|
||||||
String thumbnail = post.getString("thumbnail_url");
|
String thumbnail = post.getString("thumbnail_url");
|
||||||
int[] wh_array = getImageDimension(thumbnail);
|
//int[] wh_array = getImageDimension(thumbnail);
|
||||||
previews.add(new Post.Preview(thumbnail, wh_array[0], wh_array[1], "", ""));
|
previews.add(new Post.Preview(thumbnail, 0, 0, "", ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -684,8 +683,7 @@ public class ParsePost {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int[] getImageDimension(String imageUrl) {
|
public static int[] getImageDimension(String imageUrl) {
|
||||||
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
|
|
||||||
StrictMode.setThreadPolicy(policy); //Permit all for simplicity. You may want to revise this for your actual app.
|
|
||||||
|
|
||||||
HttpURLConnection urlConnection = null;
|
HttpURLConnection urlConnection = null;
|
||||||
try {
|
try {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package eu.toldi.infinityforlemmy.post;
|
package eu.toldi.infinityforlemmy.post;
|
||||||
|
|
||||||
|
import android.graphics.Bitmap;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
|
|
||||||
@ -624,6 +625,8 @@ public class Post implements Parcelable {
|
|||||||
private String previewCaption;
|
private String previewCaption;
|
||||||
private String previewCaptionUrl;
|
private String previewCaptionUrl;
|
||||||
|
|
||||||
|
private Bitmap previewBitmap;
|
||||||
|
|
||||||
public Preview(String previewUrl, int previewWidth, int previewHeight, String previewCaption, String previewCaptionUrl) {
|
public Preview(String previewUrl, int previewWidth, int previewHeight, String previewCaption, String previewCaptionUrl) {
|
||||||
this.previewUrl = previewUrl;
|
this.previewUrl = previewUrl;
|
||||||
this.previewWidth = previewWidth;
|
this.previewWidth = previewWidth;
|
||||||
@ -638,6 +641,7 @@ public class Post implements Parcelable {
|
|||||||
previewHeight = in.readInt();
|
previewHeight = in.readInt();
|
||||||
previewCaption = in.readString();
|
previewCaption = in.readString();
|
||||||
previewCaptionUrl = in.readString();
|
previewCaptionUrl = in.readString();
|
||||||
|
previewBitmap = in.readParcelable(Bitmap.class.getClassLoader());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Creator<Preview> CREATOR = new Creator<Preview>() {
|
public static final Creator<Preview> CREATOR = new Creator<Preview>() {
|
||||||
@ -686,13 +690,23 @@ public class Post implements Parcelable {
|
|||||||
return previewCaptionUrl;
|
return previewCaptionUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPreviewCaptionUrl(String previewCaptionUrl) { this.previewCaptionUrl = previewCaptionUrl; }
|
public void setPreviewCaptionUrl(String previewCaptionUrl) {
|
||||||
|
this.previewCaptionUrl = previewCaptionUrl;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int describeContents() {
|
public int describeContents() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Bitmap getPreviewBitmap() {
|
||||||
|
return previewBitmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPreviewBitmap(Bitmap previewBitmap) {
|
||||||
|
this.previewBitmap = previewBitmap;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(Parcel parcel, int i) {
|
public void writeToParcel(Parcel parcel, int i) {
|
||||||
parcel.writeString(previewUrl);
|
parcel.writeString(previewUrl);
|
||||||
@ -700,6 +714,7 @@ public class Post implements Parcelable {
|
|||||||
parcel.writeInt(previewHeight);
|
parcel.writeInt(previewHeight);
|
||||||
parcel.writeString(previewCaption);
|
parcel.writeString(previewCaption);
|
||||||
parcel.writeString(previewCaptionUrl);
|
parcel.writeString(previewCaptionUrl);
|
||||||
|
parcel.writeParcelable(previewBitmap, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user