diff options
author | Alex Ning <chineseperson5@gmail.com> | 2020-07-13 15:54:15 +0000 |
---|---|---|
committer | Alex Ning <chineseperson5@gmail.com> | 2020-07-13 15:54:15 +0000 |
commit | b1c6223233ea38cfcfbb2a7505a33364f8ce9922 (patch) | |
tree | 35bed164e0a74db7b6261ad99d0c210365549424 /app/src | |
parent | cd108fbe554b81dc4fb1279ef5e0660ca9836d8e (diff) | |
download | infinity-for-reddit-b1c6223233ea38cfcfbb2a7505a33364f8ce9922.tar infinity-for-reddit-b1c6223233ea38cfcfbb2a7505a33364f8ce9922.tar.gz infinity-for-reddit-b1c6223233ea38cfcfbb2a7505a33364f8ce9922.tar.bz2 infinity-for-reddit-b1c6223233ea38cfcfbb2a7505a33364f8ce9922.tar.lz infinity-for-reddit-b1c6223233ea38cfcfbb2a7505a33364f8ce9922.tar.xz infinity-for-reddit-b1c6223233ea38cfcfbb2a7505a33364f8ce9922.tar.zst infinity-for-reddit-b1c6223233ea38cfcfbb2a7505a33364f8ce9922.zip |
Probably fix app crashes when loading large images in CommentAndPostRecyclerViewAdapter.
Diffstat (limited to 'app/src')
-rw-r--r-- | app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java | 14 | ||||
-rw-r--r-- | app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java | 552 | ||||
-rw-r--r-- | app/src/main/res/layout/item_post_detail_gif_autoplay.xml | 328 | ||||
-rw-r--r-- | app/src/main/res/layout/item_post_detail_image_and_gif_autoplay.xml (renamed from app/src/main/res/layout/item_post_detail_image.xml) | 83 |
4 files changed, 132 insertions, 845 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java index af2ac5aa..4bb7ce90 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java @@ -5,6 +5,7 @@ import android.content.SharedPreferences; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; +import android.util.DisplayMetrics; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; @@ -196,6 +197,7 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS private boolean mLockFab; private boolean mSwipeUpToHideFab; private boolean mExpandChildren; + private int mWindowWidth; private LinearLayoutManager mLinearLayoutManager; private CommentAndPostRecyclerViewAdapter mAdapter; private RecyclerView.SmoothScroller mSmoothScroller; @@ -251,6 +253,10 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS } } + DisplayMetrics displayMetrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); + mWindowWidth = displayMetrics.widthPixels; + mToolbar.setTitle(""); setSupportActionBar(mToolbar); setToolbarGoToTop(mToolbar); @@ -462,8 +468,8 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS mAdapter = new CommentAndPostRecyclerViewAdapter(ViewPostDetailActivity.this, mCustomThemeWrapper, mRetrofit, mOauthRetrofit, mRedditDataRoomDatabase, mGlide, - mAccessToken, mAccountName, mPost, mLocale, mSingleCommentId, isSingleCommentThreadMode, - mSharedPreferences, mExoCreator, + mWindowWidth, mAccessToken, mAccountName, mPost, mLocale, mSingleCommentId, + isSingleCommentThreadMode, mSharedPreferences, mExoCreator, new CommentAndPostRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() { @Override public void updatePost(Post post) { @@ -626,8 +632,8 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS mAdapter = new CommentAndPostRecyclerViewAdapter(ViewPostDetailActivity.this, mCustomThemeWrapper, mRetrofit, mOauthRetrofit, mRedditDataRoomDatabase, mGlide, - mAccessToken, mAccountName, mPost, mLocale, mSingleCommentId, isSingleCommentThreadMode, - mSharedPreferences, mExoCreator, + mWindowWidth, mAccessToken, mAccountName, mPost, mLocale, + mSingleCommentId, isSingleCommentThreadMode, mSharedPreferences, mExoCreator, new CommentAndPostRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() { @Override public void updatePost(Post post) { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java index 5fc3a511..f04fa355 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java @@ -5,7 +5,6 @@ import android.content.SharedPreferences; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; -import android.graphics.Bitmap; import android.graphics.ColorFilter; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; @@ -42,11 +41,7 @@ import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.request.RequestListener; 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.transition.Transition; -import com.davemorrissey.labs.subscaleview.ImageSource; -import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; import com.google.android.exoplayer2.metadata.Metadata; import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.text.Cue; @@ -102,7 +97,6 @@ import ml.docilealligator.infinityforreddit.Comment.Comment; import ml.docilealligator.infinityforreddit.Comment.FetchComment; import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.CustomView.AspectRatioGifImageView; -import ml.docilealligator.infinityforreddit.CustomView.AspectRatioSubsamplingScaleImageView; import ml.docilealligator.infinityforreddit.CustomView.MarkwonLinearLayoutManager; import ml.docilealligator.infinityforreddit.Post.Post; import ml.docilealligator.infinityforreddit.Post.PostDataSource; @@ -122,20 +116,19 @@ import static ml.docilealligator.infinityforreddit.Activity.CommentActivity.WRIT public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements CacheManager { private static final int VIEW_TYPE_POST_DETAIL_VIDEO_AUTOPLAY = 1; private static final int VIEW_TYPE_POST_DETAIL_VIDEO_AND_GIF_PREVIEW = 2; - private static final int VIEW_TYPE_POST_DETAIL_GIF_AUTOPLAY = 3; - private static final int VIEW_TYPE_POST_DETAIL_IMAGE = 4; - private static final int VIEW_TYPE_POST_DETAIL_LINK = 5; - private static final int VIEW_TYPE_POST_DETAIL_NO_PREVIEW_LINK = 6; - private static final int VIEW_TYPE_POST_DETAIL_TEXT_TYPE = 7; - private static final int VIEW_TYPE_FIRST_LOADING = 8; - private static final int VIEW_TYPE_FIRST_LOADING_FAILED = 9; - private static final int VIEW_TYPE_NO_COMMENT_PLACEHOLDER = 10; - private static final int VIEW_TYPE_COMMENT = 11; - private static final int VIEW_TYPE_COMMENT_FULLY_COLLAPSED = 12; - private static final int VIEW_TYPE_LOAD_MORE_CHILD_COMMENTS = 13; - private static final int VIEW_TYPE_IS_LOADING_MORE_COMMENTS = 14; - private static final int VIEW_TYPE_LOAD_MORE_COMMENTS_FAILED = 15; - private static final int VIEW_TYPE_VIEW_ALL_COMMENTS = 16; + private static final int VIEW_TYPE_POST_DETAIL_IMAGE_AND_GIF_AUTOPLAY = 3; + private static final int VIEW_TYPE_POST_DETAIL_LINK = 4; + private static final int VIEW_TYPE_POST_DETAIL_NO_PREVIEW_LINK = 5; + private static final int VIEW_TYPE_POST_DETAIL_TEXT_TYPE = 6; + private static final int VIEW_TYPE_FIRST_LOADING = 7; + private static final int VIEW_TYPE_FIRST_LOADING_FAILED = 8; + private static final int VIEW_TYPE_NO_COMMENT_PLACEHOLDER = 9; + private static final int VIEW_TYPE_COMMENT = 10; + private static final int VIEW_TYPE_COMMENT_FULLY_COLLAPSED = 11; + private static final int VIEW_TYPE_LOAD_MORE_CHILD_COMMENTS = 12; + private static final int VIEW_TYPE_IS_LOADING_MORE_COMMENTS = 13; + private static final int VIEW_TYPE_LOAD_MORE_COMMENTS_FAILED = 14; + private static final int VIEW_TYPE_VIEW_ALL_COMMENTS = 15; private AppCompatActivity mActivity; private Retrofit mRetrofit; @@ -145,6 +138,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy private Markwon mPostDetailMarkwon; private Markwon mCommentMarkwon; private final MarkwonAdapter mMarkwonAdapter; + private int mImageViewWidth; private String mAccessToken; private String mAccountName; private Post mPost; @@ -229,8 +223,9 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy public CommentAndPostRecyclerViewAdapter(AppCompatActivity activity, CustomThemeWrapper customThemeWrapper, Retrofit retrofit, Retrofit oauthRetrofit, RedditDataRoomDatabase redditDataRoomDatabase, RequestManager glide, - String accessToken, String accountName, Post post, Locale locale, - String singleCommentId, boolean isSingleCommentThreadMode, + int imageViewWidth, String accessToken, String accountName, + Post post, Locale locale, String singleCommentId, + boolean isSingleCommentThreadMode, SharedPreferences sharedPreferences, ExoCreator exoCreator, CommentRecyclerViewAdapterCallback commentRecyclerViewAdapterCallback) { mActivity = activity; @@ -322,6 +317,7 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy .tableLayout(R.layout.adapter_table_block, R.id.table_layout) .textLayoutIsRoot(R.layout.view_table_entry_cell))) .build(); + mImageViewWidth = imageViewWidth; mAccessToken = accessToken; mAccountName = accountName; mPost = post; @@ -438,12 +434,12 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy if (!mAutoplayNsfwVideos && mPost.isNSFW()) { return VIEW_TYPE_POST_DETAIL_VIDEO_AND_GIF_PREVIEW; } - return VIEW_TYPE_POST_DETAIL_GIF_AUTOPLAY; + return VIEW_TYPE_POST_DETAIL_IMAGE_AND_GIF_AUTOPLAY; } else { return VIEW_TYPE_POST_DETAIL_VIDEO_AND_GIF_PREVIEW; } case Post.IMAGE_TYPE: - return VIEW_TYPE_POST_DETAIL_IMAGE; + return VIEW_TYPE_POST_DETAIL_IMAGE_AND_GIF_AUTOPLAY; case Post.LINK_TYPE: return VIEW_TYPE_POST_DETAIL_LINK; case Post.NO_PREVIEW_LINK_TYPE: @@ -517,10 +513,8 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy return new PostDetailVideoAutoplayViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_detail_video_autoplay, parent, false)); case VIEW_TYPE_POST_DETAIL_VIDEO_AND_GIF_PREVIEW: return new PostDetailVideoAndGifPreviewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_detail_video_and_gif_preview, parent, false)); - case VIEW_TYPE_POST_DETAIL_GIF_AUTOPLAY: - return new PostDetailGifAutoplayViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_detail_gif_autoplay, parent, false)); - case VIEW_TYPE_POST_DETAIL_IMAGE: - return new PostDetailImageViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_detail_image, parent, false)); + case VIEW_TYPE_POST_DETAIL_IMAGE_AND_GIF_AUTOPLAY: + return new PostDetailImageAndGifAutoplayViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_detail_image_and_gif_autoplay, parent, false)); case VIEW_TYPE_POST_DETAIL_LINK: return new PostDetailLinkViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_detail_link, parent, false)); case VIEW_TYPE_POST_DETAIL_NO_PREVIEW_LINK: @@ -722,17 +716,20 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy } ((PostDetailVideoAndGifPreviewHolder) holder).mImageView.setRatio((float) mPost.getPreviewHeight() / (float) mPost.getPreviewWidth()); loadImage((PostDetailVideoAndGifPreviewHolder) holder); - } else if (holder instanceof PostDetailGifAutoplayViewHolder) { - ((PostDetailGifAutoplayViewHolder) holder).mImageView.setRatio((float) mPost.getPreviewHeight() / (float) mPost.getPreviewWidth()); - loadImage((PostDetailGifAutoplayViewHolder) holder); - } else if (holder instanceof PostDetailImageViewHolder) { - if (mPost.getPreviewWidth() <= 0 || mPost.getPreviewHeight() <= 0) { - ((PostDetailImageViewHolder) holder).mImageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP); - ((PostDetailImageViewHolder) holder).mImageView.getLayoutParams().height = (int) (400 * mScale); + } else if (holder instanceof PostDetailImageAndGifAutoplayViewHolder) { + if (mPost.getPostType() == Post.IMAGE_TYPE) { + ((PostDetailImageAndGifAutoplayViewHolder) holder).mTypeTextView.setText(R.string.image); + } else { + ((PostDetailImageAndGifAutoplayViewHolder) holder).mTypeTextView.setText(R.string.gif); } - ((PostDetailImageViewHolder) holder).mImageView.setRatio((float) mPost.getPreviewHeight() / (float) mPost.getPreviewWidth()); - loadImage((PostDetailImageViewHolder) holder); + if (mPost.getPreviewWidth() <= 0 || mPost.getPreviewHeight() <= 0) { + ((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP); + ((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.getLayoutParams().height = (int) (400 * mScale); + } else { + ((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.setRatio((float) mPost.getPreviewHeight() / (float) mPost.getPreviewWidth()); + } + loadImage((PostDetailImageAndGifAutoplayViewHolder) holder); } else if (holder instanceof PostDetailLinkViewHolder) { String domain = Uri.parse(mPost.getUrl()).getHost(); ((PostDetailLinkViewHolder) holder).mLinkTextView.setText(domain); @@ -1222,65 +1219,36 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy } private void loadImage(PostDetailBaseViewHolder holder) { - if (holder instanceof PostDetailGifAutoplayViewHolder) { - mGlide.asBitmap().load(mPost.getPreviewUrl()) - .listener(new RequestListener<Bitmap>() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) { - ((PostDetailGifAutoplayViewHolder) holder).mLoadImageProgressBar.setVisibility(View.GONE); - ((PostDetailGifAutoplayViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.VISIBLE); - ((PostDetailGifAutoplayViewHolder) holder).mLoadImageErrorTextView.setOnClickListener(view -> { - ((PostDetailGifAutoplayViewHolder) holder).mLoadImageProgressBar.setVisibility(View.VISIBLE); - ((PostDetailGifAutoplayViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.GONE); - loadImage(holder); - }); - return false; - } - - @Override - public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) { - ((PostDetailGifAutoplayViewHolder) holder).mLoadWrapper.setVisibility(View.GONE); - return false; - } - }).into(((PostDetailGifAutoplayViewHolder) holder).mImageView); - } else if (holder instanceof PostDetailImageViewHolder) { - RequestBuilder<Bitmap> imageRequestBuilder = mGlide.asBitmap().load(mPost.getPreviewUrl()) - .listener(new RequestListener<Bitmap>() { + if (holder instanceof PostDetailImageAndGifAutoplayViewHolder) { + RequestBuilder<Drawable> imageRequestBuilder = mGlide.load(mPost.getPreviewUrl()) + .listener(new RequestListener<Drawable>() { @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) { - ((PostDetailImageViewHolder) holder).mLoadImageProgressBar.setVisibility(View.GONE); - ((PostDetailImageViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.VISIBLE); - ((PostDetailImageViewHolder) holder).mLoadImageErrorTextView.setOnClickListener(view -> { - ((PostDetailImageViewHolder) holder).mLoadImageProgressBar.setVisibility(View.VISIBLE); - ((PostDetailImageViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.GONE); + public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) { + ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageProgressBar.setVisibility(View.GONE); + ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.VISIBLE); + ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageErrorTextView.setOnClickListener(view -> { + ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageProgressBar.setVisibility(View.VISIBLE); + ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.GONE); loadImage(holder); }); return false; } @Override - public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) { - ((PostDetailImageViewHolder) holder).mLoadWrapper.setVisibility(View.GONE); + public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) { + ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadWrapper.setVisibility(View.GONE); return false; } }); - CustomTarget<Bitmap> customTarget = new CustomTarget<Bitmap>() { - @Override - public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { - ((PostDetailImageViewHolder) holder).mImageView.setImage(ImageSource.cachedBitmap(resource)); - } - - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { - - } - }; - if ((mPost.isNSFW() && mNeedBlurNsfw) || (mPost.isSpoiler() && mNeedBlurSpoiler)) { - imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10))).into(customTarget); + imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10))).into(((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView); } else { - imageRequestBuilder.apply(RequestOptions.noTransformation()).into(customTarget); + if (mImageViewWidth > mPost.getPreviewWidth()) { + imageRequestBuilder.override(Target.SIZE_ORIGINAL).into(((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView); + } else { + imageRequestBuilder.into(((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView); + } } } else if (holder instanceof PostDetailVideoAndGifPreviewHolder) { RequestBuilder<Drawable> imageRequestBuilder = mGlide.load(mPost.getPreviewUrl()) @@ -1341,259 +1309,6 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy } } - /*private void loadImage(PostDetailBaseViewHolder holder) { - if (holder instanceof PostDetailImageAndGifAutoplayViewHolder) { - String url = mAutoplay && mPost.getPostType() == Post.GIF_TYPE ? mPost.getUrl() : mPost.getPreviewUrl(); - ((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.setImageLoaderCallback(new ImageLoader.Callback() { - @Override - public void onCacheHit(int imageType, File image) { - - } - - @Override - public void onCacheMiss(int imageType, File image) { - - } - - @Override - public void onStart() { - - } - - @Override - public void onProgress(int progress) { - - } - - @Override - public void onFinish() { - - } - - @Override - public void onSuccess(File image) { - ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadWrapper.setVisibility(View.GONE); - } - - @Override - public void onFail(Exception error) { - ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageProgressBar.setVisibility(View.GONE); - ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.VISIBLE); - ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageErrorTextView.setOnClickListener(view -> { - ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageProgressBar.setVisibility(View.VISIBLE); - ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.GONE); - loadImage(holder); - }); - } - }); - if ((mPost.isNSFW() && mNeedBlurNsfw) || (mPost.isSpoiler() && mNeedBlurSpoiler)) { - SubsamplingScaleImageView subsamplingScaleImageView = ((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.getSSIV(); - if (subsamplingScaleImageView != null) { - mGlide.asBitmap().load(url) - .listener(new RequestListener<Bitmap>() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) { - ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageProgressBar.setVisibility(View.GONE); - ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.VISIBLE); - ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageErrorTextView.setOnClickListener(view -> { - ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageProgressBar.setVisibility(View.VISIBLE); - ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.GONE); - loadImage(holder); - }); - return false; - } - - @Override - public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) { - ((PostDetailImageAndGifAutoplayViewHolder) holder).mLoadWrapper.setVisibility(View.GONE); - return false; - } - }).apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10))).into(new CustomTarget<Bitmap>() { - @Override - public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { - subsamplingScaleImageView.setImage(ImageSource.bitmap(resource)); - } - - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { - - } - }); - } else { - ((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.showImage(Uri.parse(url)); - } - } else { - ((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView.showImage(Uri.parse(url)); - } - } else if (holder instanceof PostDetailVideoAndGifPreviewHolder) { - ((PostDetailVideoAndGifPreviewHolder) holder).mImageView.setImageLoaderCallback(new ImageLoader.Callback() { - @Override - public void onCacheHit(int imageType, File image) { - - } - - @Override - public void onCacheMiss(int imageType, File image) { - - } - - @Override - public void onStart() { - - } - - @Override - public void onProgress(int progress) { - - } - - @Override - public void onFinish() { - - } - - @Override - public void onSuccess(File image) { - ((PostDetailVideoAndGifPreviewHolder) holder).mLoadWrapper.setVisibility(View.GONE); - } - - @Override - public void onFail(Exception error) { - ((PostDetailVideoAndGifPreviewHolder) holder).mLoadImageProgressBar.setVisibility(View.GONE); - ((PostDetailVideoAndGifPreviewHolder) holder).mLoadImageErrorTextView.setVisibility(View.VISIBLE); - ((PostDetailVideoAndGifPreviewHolder) holder).mLoadImageErrorTextView.setOnClickListener(view -> { - ((PostDetailVideoAndGifPreviewHolder) holder).mLoadImageProgressBar.setVisibility(View.VISIBLE); - ((PostDetailVideoAndGifPreviewHolder) holder).mLoadImageErrorTextView.setVisibility(View.GONE); - loadImage(holder); - }); - } - }); - if ((mPost.isNSFW() && mNeedBlurNsfw) || (mPost.isSpoiler() && mNeedBlurSpoiler)) { - SubsamplingScaleImageView subsamplingScaleImageView = ((PostDetailVideoAndGifPreviewHolder) holder).mImageView.getSSIV(); - if (subsamplingScaleImageView != null) { - mGlide.asBitmap().load(mPost.getPreviewUrl()) - .listener(new RequestListener<Bitmap>() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) { - ((PostDetailVideoAndGifPreviewHolder) holder).mLoadImageProgressBar.setVisibility(View.GONE); - ((PostDetailVideoAndGifPreviewHolder) holder).mLoadImageErrorTextView.setVisibility(View.VISIBLE); - ((PostDetailVideoAndGifPreviewHolder) holder).mLoadImageErrorTextView.setOnClickListener(view -> { - ((PostDetailVideoAndGifPreviewHolder) holder).mLoadImageProgressBar.setVisibility(View.VISIBLE); - ((PostDetailVideoAndGifPreviewHolder) holder).mLoadImageErrorTextView.setVisibility(View.GONE); - loadImage(holder); - }); - return false; - } - - @Override - public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) { - ((PostDetailVideoAndGifPreviewHolder) holder).mLoadWrapper.setVisibility(View.GONE); - return false; - } - }).apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10))) - .into(new CustomTarget<Bitmap>() { - @Override - public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { - subsamplingScaleImageView.setImage(ImageSource.bitmap(resource)); - } - - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { - - } - }); - } else { - ((PostDetailVideoAndGifPreviewHolder) holder).mImageView.showImage(Uri.parse(mPost.getPreviewUrl())); - } - } else { - ((PostDetailVideoAndGifPreviewHolder) holder).mImageView.showImage(Uri.parse(mPost.getPreviewUrl())); - } - } else if (holder instanceof PostDetailLinkViewHolder) { - ((PostDetailLinkViewHolder) holder).mImageView.setImageLoaderCallback(new ImageLoader.Callback() { - @Override - public void onCacheHit(int imageType, File image) { - - } - - @Override - public void onCacheMiss(int imageType, File image) { - - } - - @Override - public void onStart() { - - } - - @Override - public void onProgress(int progress) { - - } - - @Override - public void onFinish() { - - } - - @Override - public void onSuccess(File image) { - ((PostDetailLinkViewHolder) holder).mLoadWrapper.setVisibility(View.GONE); - } - - @Override - public void onFail(Exception error) { - ((PostDetailLinkViewHolder) holder).mLoadImageProgressBar.setVisibility(View.GONE); - ((PostDetailLinkViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.VISIBLE); - ((PostDetailLinkViewHolder) holder).mLoadImageErrorTextView.setOnClickListener(view -> { - ((PostDetailLinkViewHolder) holder).mLoadImageProgressBar.setVisibility(View.VISIBLE); - ((PostDetailLinkViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.GONE); - loadImage(holder); - }); - } - }); - if ((mPost.isNSFW() && mNeedBlurNsfw) || (mPost.isSpoiler() && mNeedBlurSpoiler)) { - SubsamplingScaleImageView subsamplingScaleImageView = ((PostDetailLinkViewHolder) holder).mImageView.getSSIV(); - if (subsamplingScaleImageView != null) { - mGlide.asBitmap().load(mPost.getPreviewUrl()) - .listener(new RequestListener<Bitmap>() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) { - ((PostDetailLinkViewHolder) holder).mLoadImageProgressBar.setVisibility(View.GONE); - ((PostDetailLinkViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.VISIBLE); - ((PostDetailLinkViewHolder) holder).mLoadImageErrorTextView.setOnClickListener(view -> { - ((PostDetailLinkViewHolder) holder).mLoadImageProgressBar.setVisibility(View.VISIBLE); - ((PostDetailLinkViewHolder) holder).mLoadImageErrorTextView.setVisibility(View.GONE); - loadImage(holder); - }); - return false; - } - - @Override - public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) { - ((PostDetailLinkViewHolder) holder).mLoadWrapper.setVisibility(View.GONE); - return false; - } - }).apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10))) - .into(new CustomTarget<Bitmap>() { - @Override - public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { - subsamplingScaleImageView.setImage(ImageSource.bitmap(resource)); - } - - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { - - } - }); - } else { - ((PostDetailLinkViewHolder) holder).mImageView.showImage(Uri.parse(mPost.getPreviewUrl())); - } - } else { - ((PostDetailLinkViewHolder) holder).mImageView.showImage(Uri.parse(mPost.getPreviewUrl())); - } - } - }*/ - public void updatePost(Post post) { mPost = post; notifyItemChanged(0); @@ -1903,11 +1618,8 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy ((PostDetailVideoAutoplayViewHolder) holder).previewImageView.setVisibility(View.GONE); } else if (holder instanceof PostDetailVideoAndGifPreviewHolder) { mGlide.clear(((PostDetailVideoAndGifPreviewHolder) holder).mImageView); - } else if (holder instanceof PostDetailGifAutoplayViewHolder) { - mGlide.clear(((PostDetailGifAutoplayViewHolder) holder).mImageView); - } else if (holder instanceof PostDetailImageViewHolder) { - mGlide.clear(((PostDetailImageViewHolder) holder).mImageView); - ((PostDetailImageViewHolder) holder).mImageView.recycle(); + } else if (holder instanceof PostDetailImageAndGifAutoplayViewHolder) { + mGlide.clear(((PostDetailImageAndGifAutoplayViewHolder) holder).mImageView); } else if (holder instanceof PostDetailLinkViewHolder) { mGlide.clear(((PostDetailLinkViewHolder) holder).mImageView); } @@ -2689,163 +2401,61 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy } } - class PostDetailGifAutoplayViewHolder extends PostDetailBaseViewHolder { - @BindView(R.id.icon_gif_image_view_item_post_detail_gif_autoplay) + class PostDetailImageAndGifAutoplayViewHolder extends PostDetailBaseViewHolder { + @BindView(R.id.icon_gif_image_view_item_post_detail_image_and_gif_autoplay) AspectRatioGifImageView mIconGifImageView; - @BindView(R.id.subreddit_text_view_item_post_detail_gif_autoplay) + @BindView(R.id.subreddit_text_view_item_post_detail_image_and_gif_autoplay) TextView mSubredditTextView; - @BindView(R.id.user_text_view_item_post_detail_gif_autoplay) + @BindView(R.id.user_text_view_item_post_detail_image_and_gif_autoplay) TextView mUserTextView; - @BindView(R.id.author_flair_text_view_item_post_detail_gif_autoplay) + @BindView(R.id.author_flair_text_view_item_post_detail_image_and_gif_autoplay) TextView mAuthorFlairTextView; - @BindView(R.id.post_time_text_view_item_post_detail_gif_autoplay) + @BindView(R.id.post_time_text_view_item_post_detail_image_and_gif_autoplay) TextView mPostTimeTextView; - @BindView(R.id.title_text_view_item_post_detail_gif_autoplay) + @BindView(R.id.title_text_view_item_post_detail_image_and_gif_autoplay) TextView mTitleTextView; - @BindView(R.id.type_text_view_item_post_detail_gif_autoplay) + @BindView(R.id.type_text_view_item_post_detail_image_and_gif_autoplay) CustomTextView mTypeTextView; - @BindView(R.id.crosspost_image_view_item_post_detail_gif_autoplay) + @BindView(R.id.crosspost_image_view_item_post_detail_image_and_gif_autoplay) ImageView mCrosspostImageView; - @BindView(R.id.archived_image_view_item_post_detail_gif_autoplay) + @BindView(R.id.archived_image_view_item_post_detail_image_and_gif_autoplay) ImageView mArchivedImageView; - @BindView(R.id.locked_image_view_item_post_detail_gif_autoplay) + @BindView(R.id.locked_image_view_item_post_detail_image_and_gif_autoplay) ImageView mLockedImageView; - @BindView(R.id.nsfw_text_view_item_post_detail_gif_autoplay) + @BindView(R.id.nsfw_text_view_item_post_detail_image_and_gif_autoplay) CustomTextView mNSFWTextView; - @BindView(R.id.spoiler_custom_text_view_item_post_detail_gif_autoplay) + @BindView(R.id.spoiler_custom_text_view_item_post_detail_image_and_gif_autoplay) CustomTextView mSpoilerTextView; - @BindView(R.id.flair_custom_text_view_item_post_detail_gif_autoplay) + @BindView(R.id.flair_custom_text_view_item_post_detail_image_and_gif_autoplay) CustomTextView mFlairTextView; - @BindView(R.id.awards_text_view_item_post_detail_gif_autoplay) + @BindView(R.id.awards_text_view_item_post_detail_image_and_gif_autoplay) TextView mAwardsTextView; - @BindView(R.id.image_view_wrapper_item_post_detail_gif_autoplay) + @BindView(R.id.image_view_wrapper_item_post_detail_image_and_gif_autoplay) RelativeLayout mRelativeLayout; - @BindView(R.id.load_wrapper_item_post_detail_gif_autoplay) + @BindView(R.id.load_wrapper_item_post_detail_image_and_gif_autoplay) RelativeLayout mLoadWrapper; - @BindView(R.id.progress_bar_item_post_detail_gif_autoplay) + @BindView(R.id.progress_bar_item_post_detail_image_and_gif_autoplay) ProgressBar mLoadImageProgressBar; - @BindView(R.id.load_image_error_text_view_item_post_detail_gif_autoplay) + @BindView(R.id.load_image_error_text_view_item_post_detail_image_and_gif_autoplay) TextView mLoadImageErrorTextView; - @BindView(R.id.image_view_item_post_detail_gif_autoplay) + @BindView(R.id.image_view_item_post_detail_image_and_gif_autoplay) AspectRatioGifImageView mImageView; - @BindView(R.id.bottom_constraint_layout_item_post_detail_gif_autoplay) - ConstraintLayout mBottomConstraintLayout; - @BindView(R.id.plus_button_item_post_detail_gif_autoplay) - ImageView mUpvoteButton; - @BindView(R.id.score_text_view_item_post_detail_gif_autoplay) - TextView mScoreTextView; - @BindView(R.id.minus_button_item_post_detail_gif_autoplay) - ImageView mDownvoteButton; - @BindView(R.id.comments_count_item_post_detail_gif_autoplay) - TextView commentsCountTextView; - @BindView(R.id.save_button_item_post_detail_gif_autoplay) - ImageView mSaveButton; - @BindView(R.id.share_button_item_post_detail_gif_autoplay) - ImageView mShareButton; - - PostDetailGifAutoplayViewHolder(@NonNull View itemView) { - super(itemView); - ButterKnife.bind(this, itemView); - setBaseView(mIconGifImageView, - mSubredditTextView, - mUserTextView, - mAuthorFlairTextView, - mPostTimeTextView, - mTitleTextView, - mTypeTextView, - mCrosspostImageView, - mArchivedImageView, - mLockedImageView, - mNSFWTextView, - mSpoilerTextView, - mFlairTextView, - mAwardsTextView, - mBottomConstraintLayout, - mUpvoteButton, - mScoreTextView, - mDownvoteButton, - commentsCountTextView, - mSaveButton, - mShareButton); - - mLoadImageProgressBar.setIndeterminateTintList(ColorStateList.valueOf(mColorAccent)); - mLoadImageErrorTextView.setTextColor(mPrimaryTextColor); - - mImageView.setOnClickListener(view -> { - if (mPost.getPostType() == Post.IMAGE_TYPE) { - Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class); - intent.putExtra(ViewImageOrGifActivity.IMAGE_URL_KEY, mPost.getUrl()); - intent.putExtra(ViewImageOrGifActivity.FILE_NAME_KEY, mPost.getSubredditNamePrefixed().substring(2) - + "-" + mPost.getId().substring(3) + ".jpg"); - intent.putExtra(ViewImageOrGifActivity.POST_TITLE_KEY, mPost.getTitle()); - mActivity.startActivity(intent); - } else if (mPost.getPostType() == Post.GIF_TYPE) { - Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class); - intent.putExtra(ViewImageOrGifActivity.FILE_NAME_KEY, mPost.getSubredditName() - + "-" + mPost.getId() + ".gif"); - intent.putExtra(ViewImageOrGifActivity.GIF_URL_KEY, mPost.getVideoUrl()); - intent.putExtra(ViewImageOrGifActivity.POST_TITLE_KEY, mPost.getTitle()); - mActivity.startActivity(intent); - } - }); - } - } - - class PostDetailImageViewHolder extends PostDetailBaseViewHolder { - @BindView(R.id.icon_gif_image_view_item_post_detail_image) - AspectRatioGifImageView mIconGifImageView; - @BindView(R.id.subreddit_text_view_item_post_detail_image) - TextView mSubredditTextView; - @BindView(R.id.user_text_view_item_post_detail_image) - TextView mUserTextView; - @BindView(R.id.author_flair_text_view_item_post_detail_image) - TextView mAuthorFlairTextView; - @BindView(R.id.post_time_text_view_item_post_detail_image) - TextView mPostTimeTextView; - @BindView(R.id.title_text_view_item_post_detail_image) - TextView mTitleTextView; - @BindView(R.id.type_text_view_item_post_detail_image) - CustomTextView mTypeTextView; - @BindView(R.id.crosspost_image_view_item_post_detail_image) - ImageView mCrosspostImageView; - @BindView(R.id.archived_image_view_item_post_detail_image) - ImageView mArchivedImageView; - @BindView(R.id.locked_image_view_item_post_detail_image) - ImageView mLockedImageView; - @BindView(R.id.nsfw_text_view_item_post_detail_image) - CustomTextView mNSFWTextView; - @BindView(R.id.spoiler_custom_text_view_item_post_detail_image) - CustomTextView mSpoilerTextView; - @BindView(R.id.flair_custom_text_view_item_post_detail_image) - CustomTextView mFlairTextView; - @BindView(R.id.awards_text_view_item_post_detail_image) - TextView mAwardsTextView; - @BindView(R.id.image_view_wrapper_item_post_detail_image) - RelativeLayout mRelativeLayout; - @BindView(R.id.load_wrapper_item_post_detail_image) - RelativeLayout mLoadWrapper; - @BindView(R.id.progress_bar_item_post_detail_image) - ProgressBar mLoadImageProgressBar; - @BindView(R.id.load_image_error_text_view_item_post_detail_image) - TextView mLoadImageErrorTextView; - @BindView(R.id.image_view_item_post_detail_image) - AspectRatioSubsamplingScaleImageView mImageView; - @BindView(R.id.bottom_constraint_layout_item_post_detail_image) + @BindView(R.id.bottom_constraint_layout_item_post_detail_image_and_gif_autoplay) ConstraintLayout mBottomConstraintLayout; - @BindView(R.id.plus_button_item_post_detail_image) + @BindView(R.id.plus_button_item_post_detail_image_and_gif_autoplay) ImageView mUpvoteButton; - @BindView(R.id.score_text_view_item_post_detail_image) + @BindView(R.id.score_text_view_item_post_detail_image_and_gif_autoplay) TextView mScoreTextView; - @BindView(R.id.minus_button_item_post_detail_image) + @BindView(R.id.minus_button_item_post_detail_image_and_gif_autoplay) ImageView mDownvoteButton; - @BindView(R.id.comments_count_item_post_detail_image) + @BindView(R.id.comments_count_item_post_detail_image_and_gif_autoplay) TextView commentsCountTextView; - @BindView(R.id.save_button_item_post_detail_image) + @BindView(R.id.save_button_item_post_detail_image_and_gif_autoplay) ImageView mSaveButton; - @BindView(R.id.share_button_item_post_detail_image) + @BindView(R.id.share_button_item_post_detail_image_and_gif_autoplay) ImageView mShareButton; - PostDetailImageViewHolder(@NonNull View itemView) { + PostDetailImageAndGifAutoplayViewHolder(@NonNull View itemView) { super(itemView); ButterKnife.bind(this, itemView); setBaseView(mIconGifImageView, diff --git a/app/src/main/res/layout/item_post_detail_gif_autoplay.xml b/app/src/main/res/layout/item_post_detail_gif_autoplay.xml deleted file mode 100644 index 9a86fc1a..00000000 --- a/app/src/main/res/layout/item_post_detail_gif_autoplay.xml +++ /dev/null @@ -1,328 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:background="?attr/cardViewBackgroundColor"> - - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/constraint_layout_item_post_detail_gif_autoplay" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:padding="16dp"> - - <ml.docilealligator.infinityforreddit.CustomView.AspectRatioGifImageView - android:id="@+id/icon_gif_image_view_item_post_detail_gif_autoplay" - android:layout_width="24dp" - android:layout_height="24dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/subreddit_text_view_item_post_detail_gif_autoplay" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:layout_marginEnd="8dp" - android:textSize="?attr/font_default" - android:fontFamily="?attr/font_family" - android:maxLines="2" - android:ellipsize="end" - app:layout_constraintStart_toEndOf="@+id/icon_gif_image_view_item_post_detail_gif_autoplay" - app:layout_constraintEnd_toStartOf="@id/guideline" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintHorizontal_bias="0" /> - - <TextView - android:id="@+id/user_text_view_item_post_detail_gif_autoplay" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:layout_marginEnd="8dp" - android:textSize="?attr/font_default" - android:fontFamily="?attr/font_family" - android:maxLines="2" - android:ellipsize="end" - app:layout_constraintBottom_toTopOf="@+id/author_flair_text_view_item_post_detail_gif_autoplay" - app:layout_constraintStart_toEndOf="@+id/icon_gif_image_view_item_post_detail_gif_autoplay" - app:layout_constraintEnd_toStartOf="@id/guideline" - app:layout_constraintTop_toBottomOf="@+id/subreddit_text_view_item_post_detail_gif_autoplay" - app:layout_constraintHorizontal_bias="0" /> - - <TextView - android:id="@+id/author_flair_text_view_item_post_detail_gif_autoplay" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:layout_marginEnd="8dp" - android:textSize="?attr/font_12" - android:fontFamily="?attr/font_family" - android:maxLines="2" - android:ellipsize="end" - android:visibility="gone" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@+id/icon_gif_image_view_item_post_detail_gif_autoplay" - app:layout_constraintEnd_toStartOf="@id/guideline" - app:layout_constraintTop_toBottomOf="@+id/user_text_view_item_post_detail_gif_autoplay" - app:layout_constraintHorizontal_bias="0" /> - - <TextView - android:id="@+id/post_time_text_view_item_post_detail_gif_autoplay" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:gravity="end" - android:textSize="?attr/font_default" - android:fontFamily="?attr/font_family" - app:layout_constraintHorizontal_bias="1" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/guideline" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <androidx.constraintlayout.widget.Guideline - android:id="@+id/guideline" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_constraintGuide_percent="0.6" /> - - </androidx.constraintlayout.widget.ConstraintLayout> - - <TextView - android:id="@+id/title_text_view_item_post_detail_gif_autoplay" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingStart="16dp" - android:paddingEnd="16dp" - android:textColor="?attr/primaryTextColor" - android:textSize="?attr/title_font_18" - android:fontFamily="?attr/title_font_family" - android:textIsSelectable="true" - android:enabled="true" - android:focusable="true" - android:longClickable="true" /> - - <com.nex3z.flowlayout.FlowLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:padding="16dp" - app:flChildSpacing="16dp" - app:flChildSpacingForLastRow="align" - app:flRowSpacing="8dp"> - - <com.libRG.CustomTextView - android:id="@+id/type_text_view_item_post_detail_gif_autoplay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="4dp" - android:text="@string/gif" - android:textSize="?attr/font_12" - android:fontFamily="?attr/font_family" - app:lib_setRadius="3dp" - app:lib_setRoundedView="true" - app:lib_setShape="rectangle" /> - - <com.libRG.CustomTextView - android:id="@+id/spoiler_custom_text_view_item_post_detail_gif_autoplay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:text="@string/spoiler" - android:textSize="?attr/font_12" - android:fontFamily="?attr/font_family" - android:padding="4dp" - android:visibility="gone" - app:lib_setRadius="3dp" - app:lib_setRoundedView="true" - app:lib_setShape="rectangle" /> - - <com.libRG.CustomTextView - android:id="@+id/nsfw_text_view_item_post_detail_gif_autoplay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="4dp" - android:text="@string/nsfw" - android:textSize="?attr/font_12" - android:fontFamily="?attr/font_family" - android:visibility="gone" - app:lib_setRadius="3dp" - app:lib_setRoundedView="true" - app:lib_setShape="rectangle" /> - - <com.libRG.CustomTextView - android:id="@+id/flair_custom_text_view_item_post_detail_gif_autoplay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:padding="4dp" - android:textSize="?attr/font_12" - android:fontFamily="?attr/font_family" - android:visibility="gone" - app:lib_setRadius="3dp" - app:lib_setRoundedView="true" - app:lib_setShape="rectangle" /> - - <ImageView - android:id="@+id/archived_image_view_item_post_detail_gif_autoplay" - android:layout_width="20dp" - android:layout_height="20dp" - android:src="@drawable/ic_archive_outline" - android:visibility="gone" /> - - <ImageView - android:id="@+id/locked_image_view_item_post_detail_gif_autoplay" - android:layout_width="20dp" - android:layout_height="20dp" - android:src="@drawable/ic_outline_lock_24dp" - android:visibility="gone" /> - - <ImageView - android:id="@+id/crosspost_image_view_item_post_detail_gif_autoplay" - android:layout_width="20dp" - android:layout_height="20dp" - android:src="@drawable/crosspost" - android:visibility="gone" /> - - <TextView - android:id="@+id/awards_text_view_item_post_detail_gif_autoplay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textSize="?attr/font_12" - android:fontFamily="?attr/font_family" - android:visibility="gone" /> - - </com.nex3z.flowlayout.FlowLayout> - - <RelativeLayout - android:id="@+id/image_view_wrapper_item_post_detail_gif_autoplay" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <ml.docilealligator.infinityforreddit.CustomView.AspectRatioGifImageView - android:id="@+id/image_view_item_post_detail_gif_autoplay" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:adjustViewBounds="true" - android:scaleType="fitStart" /> - - <RelativeLayout - android:id="@+id/load_wrapper_item_post_detail_gif_autoplay" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_centerInParent="true"> - - <ProgressBar - android:id="@+id/progress_bar_item_post_detail_gif_autoplay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerInParent="true" /> - - <TextView - android:id="@+id/load_image_error_text_view_item_post_detail_gif_autoplay" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:drawableTop="@drawable/ic_error_outline_black_24dp" - android:layout_centerInParent="true" - android:gravity="center" - android:text="@string/error_loading_image_tap_to_retry" - android:textSize="?attr/font_default" - android:fontFamily="?attr/font_family" - android:visibility="gone" /> - - </RelativeLayout> - - </RelativeLayout> - - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/bottom_constraint_layout_item_post_detail_gif_autoplay"> - - <ImageView - android:id="@+id/plus_button_item_post_detail_gif_autoplay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="12dp" - android:src="@drawable/ic_arrow_upward_grey_24dp" - android:tint="@android:color/tab_indicator_text" - android:background="?actionBarItemBackground" - android:clickable="true" - android:focusable="true" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" /> - - <TextView - android:id="@+id/score_text_view_item_post_detail_gif_autoplay" - android:layout_width="64dp" - android:layout_height="wrap_content" - android:gravity="center" - android:textSize="?attr/font_12" - android:textStyle="bold" - android:fontFamily="?attr/font_family" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/plus_button_item_post_detail_gif_autoplay" /> - - <ImageView - android:id="@+id/minus_button_item_post_detail_gif_autoplay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="12dp" - android:src="@drawable/ic_arrow_downward_grey_24dp" - android:tint="@android:color/tab_indicator_text" - android:background="?actionBarItemBackground" - android:clickable="true" - android:focusable="true" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/score_text_view_item_post_detail_gif_autoplay" /> - - <TextView - android:id="@+id/comments_count_item_post_detail_gif_autoplay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="12dp" - android:gravity="center_vertical" - android:textSize="?attr/font_12" - android:textStyle="bold" - android:fontFamily="?attr/font_family" - android:drawableStart="@drawable/ic_comment_grey_24dp" - android:drawablePadding="12dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/minus_button_item_post_detail_gif_autoplay" /> - - <ImageView - android:id="@+id/save_button_item_post_detail_gif_autoplay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="12dp" - android:tint="@android:color/tab_indicator_text" - android:background="?actionBarItemBackground" - android:clickable="true" - android:focusable="true" - app:layout_constraintHorizontal_bias="1" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/comments_count_item_post_detail_gif_autoplay" - app:layout_constraintEnd_toStartOf="@id/share_button_item_post_detail_gif_autoplay" /> - - <ImageView - android:id="@+id/share_button_item_post_detail_gif_autoplay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:padding="12dp" - android:src="@drawable/ic_share_grey_24dp" - android:background="?actionBarItemBackground" - android:clickable="true" - android:focusable="true" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" /> - - </androidx.constraintlayout.widget.ConstraintLayout> - -</LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/item_post_detail_image.xml b/app/src/main/res/layout/item_post_detail_image_and_gif_autoplay.xml index be6dabfa..ecf7cf38 100644 --- a/app/src/main/res/layout/item_post_detail_image.xml +++ b/app/src/main/res/layout/item_post_detail_image_and_gif_autoplay.xml @@ -7,13 +7,13 @@ android:background="?attr/cardViewBackgroundColor"> <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/constraint_layout_item_post_detail_image" + android:id="@+id/constraint_layout_item_post_detail_image_and_gif_autoplay" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp"> <ml.docilealligator.infinityforreddit.CustomView.AspectRatioGifImageView - android:id="@+id/icon_gif_image_view_item_post_detail_image" + android:id="@+id/icon_gif_image_view_item_post_detail_image_and_gif_autoplay" android:layout_width="24dp" android:layout_height="24dp" app:layout_constraintBottom_toBottomOf="parent" @@ -21,7 +21,7 @@ app:layout_constraintTop_toTopOf="parent" /> <TextView - android:id="@+id/subreddit_text_view_item_post_detail_image" + android:id="@+id/subreddit_text_view_item_post_detail_image_and_gif_autoplay" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" @@ -30,13 +30,13 @@ android:fontFamily="?attr/font_family" android:maxLines="2" android:ellipsize="end" - app:layout_constraintStart_toEndOf="@+id/icon_gif_image_view_item_post_detail_image" + app:layout_constraintStart_toEndOf="@+id/icon_gif_image_view_item_post_detail_image_and_gif_autoplay" app:layout_constraintEnd_toStartOf="@id/guideline" app:layout_constraintTop_toTopOf="parent" app:layout_constraintHorizontal_bias="0" /> <TextView - android:id="@+id/user_text_view_item_post_detail_image" + android:id="@+id/user_text_view_item_post_detail_image_and_gif_autoplay" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" @@ -45,14 +45,14 @@ android:fontFamily="?attr/font_family" android:maxLines="2" android:ellipsize="end" - app:layout_constraintBottom_toTopOf="@+id/author_flair_text_view_item_post_detail_image" - app:layout_constraintStart_toEndOf="@+id/icon_gif_image_view_item_post_detail_image" + app:layout_constraintBottom_toTopOf="@+id/author_flair_text_view_item_post_detail_image_and_gif_autoplay" + app:layout_constraintStart_toEndOf="@+id/icon_gif_image_view_item_post_detail_image_and_gif_autoplay" app:layout_constraintEnd_toStartOf="@id/guideline" - app:layout_constraintTop_toBottomOf="@+id/subreddit_text_view_item_post_detail_image" + app:layout_constraintTop_toBottomOf="@+id/subreddit_text_view_item_post_detail_image_and_gif_autoplay" app:layout_constraintHorizontal_bias="0" /> <TextView - android:id="@+id/author_flair_text_view_item_post_detail_image" + android:id="@+id/author_flair_text_view_item_post_detail_image_and_gif_autoplay" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" @@ -63,13 +63,13 @@ android:ellipsize="end" android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@+id/icon_gif_image_view_item_post_detail_image" + app:layout_constraintStart_toEndOf="@+id/icon_gif_image_view_item_post_detail_image_and_gif_autoplay" app:layout_constraintEnd_toStartOf="@id/guideline" - app:layout_constraintTop_toBottomOf="@+id/user_text_view_item_post_detail_image" + app:layout_constraintTop_toBottomOf="@+id/user_text_view_item_post_detail_image_and_gif_autoplay" app:layout_constraintHorizontal_bias="0" /> <TextView - android:id="@+id/post_time_text_view_item_post_detail_image" + android:id="@+id/post_time_text_view_item_post_detail_image_and_gif_autoplay" android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="end" @@ -91,7 +91,7 @@ </androidx.constraintlayout.widget.ConstraintLayout> <TextView - android:id="@+id/title_text_view_item_post_detail_image" + android:id="@+id/title_text_view_item_post_detail_image_and_gif_autoplay" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingStart="16dp" @@ -113,7 +113,7 @@ app:flRowSpacing="8dp"> <com.libRG.CustomTextView - android:id="@+id/type_text_view_item_post_detail_image" + android:id="@+id/type_text_view_item_post_detail_image_and_gif_autoplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="4dp" @@ -125,7 +125,7 @@ app:lib_setShape="rectangle" /> <com.libRG.CustomTextView - android:id="@+id/spoiler_custom_text_view_item_post_detail_image" + android:id="@+id/spoiler_custom_text_view_item_post_detail_image_and_gif_autoplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" @@ -139,7 +139,7 @@ app:lib_setShape="rectangle" /> <com.libRG.CustomTextView - android:id="@+id/nsfw_text_view_item_post_detail_image" + android:id="@+id/nsfw_text_view_item_post_detail_image_and_gif_autoplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="4dp" @@ -152,7 +152,7 @@ app:lib_setShape="rectangle" /> <com.libRG.CustomTextView - android:id="@+id/flair_custom_text_view_item_post_detail_image" + android:id="@+id/flair_custom_text_view_item_post_detail_image_and_gif_autoplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" @@ -165,28 +165,28 @@ app:lib_setShape="rectangle" /> <ImageView - android:id="@+id/archived_image_view_item_post_detail_image" + android:id="@+id/archived_image_view_item_post_detail_image_and_gif_autoplay" android:layout_width="20dp" android:layout_height="20dp" android:src="@drawable/ic_archive_outline" android:visibility="gone" /> <ImageView - android:id="@+id/locked_image_view_item_post_detail_image" + android:id="@+id/locked_image_view_item_post_detail_image_and_gif_autoplay" android:layout_width="20dp" android:layout_height="20dp" android:src="@drawable/ic_outline_lock_24dp" android:visibility="gone" /> <ImageView - android:id="@+id/crosspost_image_view_item_post_detail_image" + android:id="@+id/crosspost_image_view_item_post_detail_image_and_gif_autoplay" android:layout_width="20dp" android:layout_height="20dp" android:src="@drawable/crosspost" android:visibility="gone" /> <TextView - android:id="@+id/awards_text_view_item_post_detail_image" + android:id="@+id/awards_text_view_item_post_detail_image_and_gif_autoplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="?attr/font_12" @@ -196,32 +196,31 @@ </com.nex3z.flowlayout.FlowLayout> <RelativeLayout - android:id="@+id/image_view_wrapper_item_post_detail_image" + android:id="@+id/image_view_wrapper_item_post_detail_image_and_gif_autoplay" android:layout_width="match_parent" android:layout_height="wrap_content"> - <ml.docilealligator.infinityforreddit.CustomView.AspectRatioSubsamplingScaleImageView - android:id="@+id/image_view_item_post_detail_image" + <ml.docilealligator.infinityforreddit.CustomView.AspectRatioGifImageView + android:id="@+id/image_view_item_post_detail_image_and_gif_autoplay" android:layout_width="match_parent" android:layout_height="wrap_content" - app:quickScaleEnabled="false" - app:zoomEnabled="false" - app:panEnabled="false" /> + android:adjustViewBounds="true" + android:scaleType="fitStart" /> <RelativeLayout - android:id="@+id/load_wrapper_item_post_detail_image" + android:id="@+id/load_wrapper_item_post_detail_image_and_gif_autoplay" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true"> <ProgressBar - android:id="@+id/progress_bar_item_post_detail_image" + android:id="@+id/progress_bar_item_post_detail_image_and_gif_autoplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> <TextView - android:id="@+id/load_image_error_text_view_item_post_detail_image" + android:id="@+id/load_image_error_text_view_item_post_detail_image_and_gif_autoplay" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableTop="@drawable/ic_error_outline_black_24dp" @@ -239,10 +238,10 @@ <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:id="@+id/bottom_constraint_layout_item_post_detail_image"> + android:id="@+id/bottom_constraint_layout_item_post_detail_image_and_gif_autoplay"> <ImageView - android:id="@+id/plus_button_item_post_detail_image" + android:id="@+id/plus_button_item_post_detail_image_and_gif_autoplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="12dp" @@ -256,7 +255,7 @@ app:layout_constraintStart_toStartOf="parent" /> <TextView - android:id="@+id/score_text_view_item_post_detail_image" + android:id="@+id/score_text_view_item_post_detail_image_and_gif_autoplay" android:layout_width="64dp" android:layout_height="wrap_content" android:gravity="center" @@ -265,10 +264,10 @@ android:fontFamily="?attr/font_family" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/plus_button_item_post_detail_image" /> + app:layout_constraintStart_toEndOf="@id/plus_button_item_post_detail_image_and_gif_autoplay" /> <ImageView - android:id="@+id/minus_button_item_post_detail_image" + android:id="@+id/minus_button_item_post_detail_image_and_gif_autoplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="12dp" @@ -279,10 +278,10 @@ android:focusable="true" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/score_text_view_item_post_detail_image" /> + app:layout_constraintStart_toEndOf="@id/score_text_view_item_post_detail_image_and_gif_autoplay" /> <TextView - android:id="@+id/comments_count_item_post_detail_image" + android:id="@+id/comments_count_item_post_detail_image_and_gif_autoplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="12dp" @@ -294,10 +293,10 @@ android:drawablePadding="12dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/minus_button_item_post_detail_image" /> + app:layout_constraintStart_toEndOf="@id/minus_button_item_post_detail_image_and_gif_autoplay" /> <ImageView - android:id="@+id/save_button_item_post_detail_image" + android:id="@+id/save_button_item_post_detail_image_and_gif_autoplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="12dp" @@ -308,11 +307,11 @@ app:layout_constraintHorizontal_bias="1" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/comments_count_item_post_detail_image" - app:layout_constraintEnd_toStartOf="@id/share_button_item_post_detail_image" /> + app:layout_constraintStart_toEndOf="@id/comments_count_item_post_detail_image_and_gif_autoplay" + app:layout_constraintEnd_toStartOf="@id/share_button_item_post_detail_image_and_gif_autoplay" /> <ImageView - android:id="@+id/share_button_item_post_detail_image" + android:id="@+id/share_button_item_post_detail_image_and_gif_autoplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="12dp" |