From 5020bf633fbfb0655e006da9dcf0028fe3370cbb Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Thu, 9 Jul 2020 22:29:22 +0800 Subject: [PATCH] Fix username takes up too much space in comments. Add PostCompactRightLeftThumbnailViewHolder and PostCompactLeftThumbnailViewHolder in order to fix layout issues in ConstraintLayout v2.0.0-beta8. Rename 'Show Thumbnail on the Right in Compact Layout' to 'Show Thumbnail on the Left in Compact Layout'. --- app/build.gradle | 16 +- .../CommentAndPostRecyclerViewAdapter.java | 27 +- .../CommentsListingRecyclerViewAdapter.java | 7 +- .../Adapter/PostRecyclerViewAdapter.java | 623 +++++++++++------- .../Settings/InterfacePreferenceFragment.java | 2 +- .../Utils/SharedPreferencesUtils.java | 2 +- app/src/main/res/layout/item_comment.xml | 30 +- .../item_post_compact_right_thumbnail.xml | 386 +++++++++++ app/src/main/res/values/strings.xml | 2 +- app/src/main/res/xml/interface_preference.xml | 4 +- 10 files changed, 806 insertions(+), 293 deletions(-) create mode 100644 app/src/main/res/layout/item_post_compact_right_thumbnail.xml diff --git a/app/build.gradle b/app/build.gradle index edf08528..f91b8aad 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,7 +31,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.browser:browser:1.2.0' implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta8' // Lifecycle components def lifecycleVersion = '2.2.0' implementation "androidx.lifecycle:lifecycle-extensions:$lifecycleVersion" @@ -52,15 +52,15 @@ dependencies { implementation 'com.google.android.exoplayer:exoplayer-dash:2.10.4' implementation 'com.google.android.exoplayer:exoplayer-ui:2.10.4' implementation 'com.alexvasilkov:gesture-views:2.6.0' - implementation 'com.github.bumptech.glide:glide:4.10.0' - annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0' + implementation 'com.github.bumptech.glide:glide:4.11.0' + annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' implementation 'io.reactivex.rxjava2:rxjava:2.2.19' - implementation 'com.squareup.retrofit2:retrofit:2.7.2' - implementation 'com.squareup.retrofit2:converter-scalars:2.7.2' + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + implementation 'com.squareup.retrofit2:converter-scalars:2.9.0' implementation 'jp.wasabeef:glide-transformations:4.1.0' - implementation 'com.google.dagger:dagger:2.27' - annotationProcessor 'com.google.dagger:dagger-compiler:2.27' + implementation 'com.google.dagger:dagger:2.28.1' + annotationProcessor 'com.google.dagger:dagger-compiler:2.28.1' implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' implementation 'com.github.santalu:aspect-ratio-imageview:1.0.9' @@ -70,7 +70,7 @@ dependencies { implementation 'io.noties.markwon:ext-strikethrough:4.3.1' implementation 'io.noties.markwon:simple-ext:4.3.1' implementation 'io.noties.markwon:recycler-table:4.3.1' - implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.19' + implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.20' implementation 'com.github.Ferfalk:SimpleSearchView:0.1.4' def eventbusVersion = '3.2.0' 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 96901e29..18e3dff7 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java @@ -789,29 +789,29 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter ((CommentViewHolder) holder).linearLayout.callOnClick()); - ((CommentViewHolder) holder).replyButton.setVisibility(View.GONE); - ((CommentViewHolder) holder).upvoteButton.setOnClickListener(view -> { if (mAccessToken == null) { Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show(); @@ -504,6 +502,8 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter { + ((PostCompactBaseViewHolder) holder).itemView.setOnClickListener(view -> { if (canStartActivity) { canStartActivity = false; @@ -625,13 +629,13 @@ public class PostRecyclerViewAdapter extends PagedListAdapter= 0) { @@ -644,11 +648,11 @@ public class PostRecyclerViewAdapter extends PagedListAdapter= 0) { @@ -677,18 +681,18 @@ public class PostRecyclerViewAdapter extends PagedListAdapter { + ((PostCompactBaseViewHolder) holder).nameTextView.setOnClickListener(view -> { if (canStartActivity) { canStartActivity = false; if (post.getSubredditNamePrefixed().startsWith("u/")) { @@ -705,8 +709,8 @@ public class PostRecyclerViewAdapter extends PagedListAdapter - ((PostCompactViewHolder) holder).nameTextView.performClick()); + ((PostCompactBaseViewHolder) holder).iconGifImageView.setOnClickListener(view -> + ((PostCompactBaseViewHolder) holder).nameTextView.performClick()); } else { if (post.getAuthorIconUrl() == null) { String authorName = post.getAuthor().equals("[deleted]") ? post.getSubredditNamePrefixed().substring(2) : post.getAuthor(); @@ -715,13 +719,13 @@ public class PostRecyclerViewAdapter extends PagedListAdapter= 0) { @@ -734,17 +738,17 @@ public class PostRecyclerViewAdapter extends PagedListAdapter { + ((PostCompactBaseViewHolder) holder).nameTextView.setOnClickListener(view -> { if (canStartActivity) { canStartActivity = false; Intent intent = new Intent(mActivity, ViewUserDetailActivity.class); @@ -753,33 +757,33 @@ public class PostRecyclerViewAdapter extends PagedListAdapter - ((PostCompactViewHolder) holder).nameTextView.performClick()); + ((PostCompactBaseViewHolder) holder).iconGifImageView.setOnClickListener(view -> + ((PostCompactBaseViewHolder) holder).nameTextView.performClick()); } if (mShowElapsedTime) { - ((PostCompactViewHolder) holder).postTimeTextView.setText( + ((PostCompactBaseViewHolder) holder).postTimeTextView.setText( Utils.getElapsedTime(mActivity, post.getPostTimeMillis())); } else { - ((PostCompactViewHolder) holder).postTimeTextView.setText(Utils.getFormattedTime(mLocale, post.getPostTimeMillis(), mTimeFormatPattern)); + ((PostCompactBaseViewHolder) holder).postTimeTextView.setText(Utils.getFormattedTime(mLocale, post.getPostTimeMillis(), mTimeFormatPattern)); } if (mShowDividerInCompactLayout) { - ((PostCompactViewHolder) holder).divider.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).divider.setVisibility(View.VISIBLE); } else { - ((PostCompactViewHolder) holder).divider.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).divider.setVisibility(View.GONE); } - ((PostCompactViewHolder) holder).titleTextView.setText(title); - ((PostCompactViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType())); + ((PostCompactBaseViewHolder) holder).titleTextView.setText(title); + ((PostCompactBaseViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType())); if (post.isLocked()) { - ((PostCompactViewHolder) holder).lockedImageView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).lockedImageView.setVisibility(View.VISIBLE); } if (nsfw) { if (!(mActivity instanceof FilteredThingActivity)) { - ((PostCompactViewHolder) holder).nsfwTextView.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).nsfwTextView.setOnClickListener(view -> { Intent intent = new Intent(mActivity, FilteredThingActivity.class); intent.putExtra(FilteredThingActivity.EXTRA_NAME, post.getSubredditNamePrefixed().substring(2)); intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT); @@ -787,77 +791,77 @@ public class PostRecyclerViewAdapter extends PagedListAdapter 0) { - ((PostCompactViewHolder) holder).awardsTextView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).awardsTextView.setVisibility(View.VISIBLE); if (nAwards == 1) { - ((PostCompactViewHolder) holder).awardsTextView.setText(mActivity.getString(R.string.one_award)); + ((PostCompactBaseViewHolder) holder).awardsTextView.setText(mActivity.getString(R.string.one_award)); } else { - ((PostCompactViewHolder) holder).awardsTextView.setText(mActivity.getString(R.string.n_awards, nAwards)); + ((PostCompactBaseViewHolder) holder).awardsTextView.setText(mActivity.getString(R.string.n_awards, nAwards)); } } switch (voteType) { case 1: //Upvoted - ((PostCompactViewHolder) holder).upvoteButton.setColorFilter(mUpvotedColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mUpvotedColor); + ((PostCompactBaseViewHolder) holder).upvoteButton.setColorFilter(mUpvotedColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mUpvotedColor); break; case -1: //Downvoted - ((PostCompactViewHolder) holder).downvoteButton.setColorFilter(mDownvotedColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mDownvotedColor); + ((PostCompactBaseViewHolder) holder).downvoteButton.setColorFilter(mDownvotedColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mDownvotedColor); break; } if (post.getPostType() != Post.TEXT_TYPE && post.getPostType() != Post.NO_PREVIEW_LINK_TYPE) { - ((PostCompactViewHolder) holder).relativeLayout.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).relativeLayout.setVisibility(View.VISIBLE); if (post.getPostType() != Post.GIF_TYPE && post.getPostType() != Post.VIDEO_TYPE) { - ((PostCompactViewHolder) holder).progressBar.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).progressBar.setVisibility(View.VISIBLE); } - ((PostCompactViewHolder) holder).imageView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).imageView.setVisibility(View.VISIBLE); loadImage(holder, post); } if (mPostType == PostDataSource.TYPE_SUBREDDIT && !mDisplaySubredditName && post.isStickied()) { - ((PostCompactViewHolder) holder).stickiedPostImageView.setVisibility(View.VISIBLE); - mGlide.load(R.drawable.ic_thumbtack_24dp).into(((PostCompactViewHolder) holder).stickiedPostImageView); + ((PostCompactBaseViewHolder) holder).stickiedPostImageView.setVisibility(View.VISIBLE); + mGlide.load(R.drawable.ic_thumbtack_24dp).into(((PostCompactBaseViewHolder) holder).stickiedPostImageView); } if (isArchived) { - ((PostCompactViewHolder) holder).archivedImageView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).archivedImageView.setVisibility(View.VISIBLE); - ((PostCompactViewHolder) holder).upvoteButton + ((PostCompactBaseViewHolder) holder).upvoteButton .setColorFilter(mVoteAndReplyUnavailableVoteButtonColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).downvoteButton + ((PostCompactBaseViewHolder) holder).downvoteButton .setColorFilter(mVoteAndReplyUnavailableVoteButtonColor, android.graphics.PorterDuff.Mode.SRC_IN); } if (post.isCrosspost()) { - ((PostCompactViewHolder) holder).crosspostImageView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).crosspostImageView.setVisibility(View.VISIBLE); } if (!(mActivity instanceof FilteredThingActivity)) { - ((PostCompactViewHolder) holder).typeTextView.setOnClickListener(view -> mCallback.typeChipClicked(post.getPostType())); + ((PostCompactBaseViewHolder) holder).typeTextView.setOnClickListener(view -> mCallback.typeChipClicked(post.getPostType())); } switch (post.getPostType()) { case Post.IMAGE_TYPE: - ((PostCompactViewHolder) holder).typeTextView.setText(R.string.image); + ((PostCompactBaseViewHolder) holder).typeTextView.setText(R.string.image); final String imageUrl = post.getUrl(); - ((PostCompactViewHolder) holder).imageView.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).imageView.setOnClickListener(view -> { Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class); intent.putExtra(ViewImageOrGifActivity.IMAGE_URL_KEY, imageUrl); intent.putExtra(ViewImageOrGifActivity.FILE_NAME_KEY, subredditName @@ -866,13 +870,13 @@ public class PostRecyclerViewAdapter extends PagedListAdapter { + ((PostCompactBaseViewHolder) holder).imageView.setOnClickListener(view -> { Intent intent = new Intent(mActivity, LinkResolverActivity.class); Uri uri = Uri.parse(post.getUrl()); if (uri.getScheme() == null && uri.getHost() == null) { @@ -885,10 +889,10 @@ public class PostRecyclerViewAdapter extends PagedListAdapter { + ((PostCompactBaseViewHolder) holder).imageView.setOnClickListener(view -> { Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class); intent.setData(gifVideoUri); intent.putExtra(ViewImageOrGifActivity.FILE_NAME_KEY, subredditName @@ -897,13 +901,13 @@ public class PostRecyclerViewAdapter extends PagedListAdapter { + ((PostCompactBaseViewHolder) holder).imageView.setOnClickListener(view -> { Intent intent = new Intent(mActivity, ViewVideoActivity.class); intent.setData(videoUri); intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, post.getVideoDownloadUrl()); @@ -913,17 +917,17 @@ public class PostRecyclerViewAdapter extends PagedListAdapter { + ((PostCompactBaseViewHolder) holder).linkTextView.setText(noPreviewLinkDomain); + ((PostCompactBaseViewHolder) holder).noPreviewLinkImageFrameLayout.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).noPreviewLinkImageFrameLayout.setOnClickListener(view -> { Intent intent = new Intent(mActivity, LinkResolverActivity.class); Uri uri = Uri.parse(post.getUrl()); if (uri.getScheme() == null && uri.getHost() == null) { @@ -936,11 +940,11 @@ public class PostRecyclerViewAdapter extends PagedListAdapter { + ((PostCompactBaseViewHolder) holder).upvoteButton.setOnClickListener(view -> { if (mAccessToken == null) { Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show(); return; @@ -951,48 +955,48 @@ public class PostRecyclerViewAdapter extends PagedListAdapter { + ((PostCompactBaseViewHolder) holder).downvoteButton.setOnClickListener(view -> { if (mAccessToken == null) { Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show(); return; @@ -1022,48 +1026,48 @@ public class PostRecyclerViewAdapter extends PagedListAdapter { + ((PostCompactBaseViewHolder) holder).saveButton.setOnClickListener(view -> { if (mAccessToken == null) { Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show(); return; } if (post.isSaved()) { - ((PostCompactViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); + ((PostCompactBaseViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); SaveThing.unsaveThing(mOauthRetrofit, mAccessToken, post.getFullName(), new SaveThing.SaveThingListener() { @Override public void success() { post.setSaved(false); - ((PostCompactViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); + ((PostCompactBaseViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); Toast.makeText(mActivity, R.string.post_unsaved_success, Toast.LENGTH_SHORT).show(); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post)); } @@ -1111,19 +1115,19 @@ public class PostRecyclerViewAdapter extends PagedListAdapter shareLink(post)); + ((PostCompactBaseViewHolder) holder).shareButton.setOnClickListener(view -> shareLink(post)); } } } @@ -1230,27 +1234,27 @@ public class PostRecyclerViewAdapter extends PagedListAdapter imageRequestBuilder = mGlide.load(previewUrl) .error(R.drawable.ic_error_outline_black_24dp).listener(new RequestListener() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { - ((PostCompactViewHolder) holder).progressBar.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).progressBar.setVisibility(View.GONE); return false; } @Override public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { - ((PostCompactViewHolder) holder).progressBar.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).progressBar.setVisibility(View.GONE); return false; } }); if ((post.isNSFW() && mNeedBlurNSFW) || post.isSpoiler() && mNeedBlurSpoiler) { imageRequestBuilder - .transform(new BlurTransformation(50, 2)).into(((PostCompactViewHolder) holder).imageView); + .transform(new BlurTransformation(50, 2)).into(((PostCompactBaseViewHolder) holder).imageView); } else { - imageRequestBuilder.into(((PostCompactViewHolder) holder).imageView); + imageRequestBuilder.into(((PostCompactBaseViewHolder) holder).imageView); } } } @@ -1409,28 +1413,28 @@ public class PostRecyclerViewAdapter extends PagedListAdapter { - //Do nothing in order to prevent clicking this to start ViewPostDetailActivity - }); - if (mVoteButtonsOnTheRight) { - ConstraintSet constraintSet = new ConstraintSet(); - constraintSet.clone(bottomConstraintLayout); - constraintSet.clear(upvoteButton.getId(), ConstraintSet.START); - constraintSet.clear(scoreTextView.getId(), ConstraintSet.START); - constraintSet.clear(downvoteButton.getId(), ConstraintSet.START); - constraintSet.clear(saveButton.getId(), ConstraintSet.END); - constraintSet.clear(shareButton.getId(), ConstraintSet.END); - constraintSet.connect(upvoteButton.getId(), ConstraintSet.END, scoreTextView.getId(), ConstraintSet.START); - constraintSet.connect(scoreTextView.getId(), ConstraintSet.END, downvoteButton.getId(), ConstraintSet.START); - constraintSet.connect(downvoteButton.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END); - constraintSet.connect(commentsCountTextView.getId(), ConstraintSet.START, saveButton.getId(), ConstraintSet.END); - constraintSet.connect(commentsCountTextView.getId(), ConstraintSet.END, upvoteButton.getId(), ConstraintSet.START); - constraintSet.connect(saveButton.getId(), ConstraintSet.START, shareButton.getId(), ConstraintSet.END); - constraintSet.connect(shareButton.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START); - constraintSet.setHorizontalBias(commentsCountTextView.getId(), 0); - constraintSet.applyTo(bottomConstraintLayout); - } + setBaseView(iconGifImageView, nameTextView, stickiedPostImageView, postTimeTextView, + titleAndImageConstraintLayout, titleTextView, typeTextView, archivedImageView, + lockedImageView, crosspostImageView, nsfwTextView, spoilerTextView, + flairTextView, awardsTextView, linkTextView, relativeLayout, progressBar, imageView, + playButtonImageView, noPreviewLinkImageFrameLayout, noPreviewLinkImageView, + imageBarrier, bottomConstraintLayout, upvoteButton, scoreTextView, downvoteButton, + commentsCountTextView, saveButton, shareButton, divider); + } + } - if (mShowThumbnailOnTheRightInCompactLayout) { - ConstraintSet constraintSet = new ConstraintSet(); - constraintSet.clone(titleAndImageConstraintLayout); - constraintSet.clear(titleTextView.getId(), ConstraintSet.START); - constraintSet.clear(titleTextView.getId(), ConstraintSet.END); - constraintSet.clear(R.id.flow_layout_item_post_compact, ConstraintSet.START); - constraintSet.clear(R.id.flow_layout_item_post_compact, ConstraintSet.END); - constraintSet.clear(linkTextView.getId(), ConstraintSet.START); - constraintSet.clear(linkTextView.getId(), ConstraintSet.END); - constraintSet.clear(relativeLayout.getId(), ConstraintSet.START); - constraintSet.clear(relativeLayout.getId(), ConstraintSet.END); - constraintSet.clear(noPreviewLinkImageFrameLayout.getId(), ConstraintSet.START); - constraintSet.clear(noPreviewLinkImageFrameLayout.getId(), ConstraintSet.END); - int barrierId = 1234; - constraintSet.createBarrier(barrierId, Barrier.END, R.id.image_view_wrapper_item_post_compact, - R.id.frame_layout_image_view_no_preview_link_item_post_compact); - constraintSet.connect(titleTextView.getId(), ConstraintSet.START, barrierId, ConstraintSet.END); - constraintSet.connect(titleTextView.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END); - constraintSet.connect(R.id.flow_layout_item_post_compact, ConstraintSet.START, barrierId, ConstraintSet.END); - constraintSet.connect(R.id.flow_layout_item_post_compact, ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END); - constraintSet.connect(R.id.flow_layout_item_post_compact, ConstraintSet.BOTTOM, linkTextView.getId(), ConstraintSet.TOP); - constraintSet.connect(linkTextView.getId(), ConstraintSet.START, barrierId, ConstraintSet.END); - constraintSet.connect(linkTextView.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END); - constraintSet.connect(relativeLayout.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START); - constraintSet.connect(relativeLayout.getId(), ConstraintSet.END, barrierId, ConstraintSet.START); - constraintSet.connect(noPreviewLinkImageFrameLayout.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START); - constraintSet.connect(noPreviewLinkImageFrameLayout.getId(), ConstraintSet.END, barrierId, ConstraintSet.START); - constraintSet.applyTo(titleAndImageConstraintLayout); + class PostCompactRightThumbnailViewHolder extends PostCompactBaseViewHolder { + @BindView(R.id.icon_gif_image_view_item_post_compact_right_thumbnail) + AspectRatioGifImageView iconGifImageView; + @BindView(R.id.name_text_view_item_post_compact_right_thumbnail) + TextView nameTextView; + @BindView(R.id.stickied_post_image_view_item_post_compact_right_thumbnail) + ImageView stickiedPostImageView; + @BindView(R.id.post_time_text_view_item_post_compact_right_thumbnail) + TextView postTimeTextView; + @BindView(R.id.title_and_image_constraint_layout) + ConstraintLayout titleAndImageConstraintLayout; + @BindView(R.id.title_text_view_item_post_compact_right_thumbnail) + TextView titleTextView; + @BindView(R.id.type_text_view_item_post_compact_right_thumbnail) + CustomTextView typeTextView; + @BindView(R.id.archived_image_view_item_post_compact_right_thumbnail) + ImageView archivedImageView; + @BindView(R.id.locked_image_view_item_post_compact_right_thumbnail) + ImageView lockedImageView; + @BindView(R.id.crosspost_image_view_item_post_compact_right_thumbnail) + ImageView crosspostImageView; + @BindView(R.id.nsfw_text_view_item_post_compact_right_thumbnail) + CustomTextView nsfwTextView; + @BindView(R.id.spoiler_custom_text_view_item_post_compact_right_thumbnail) + CustomTextView spoilerTextView; + @BindView(R.id.flair_custom_text_view_item_post_compact_right_thumbnail) + CustomTextView flairTextView; + @BindView(R.id.awards_text_view_item_post_compact_right_thumbnail) + CustomTextView awardsTextView; + @BindView(R.id.link_text_view_item_post_compact_right_thumbnail) + TextView linkTextView; + @BindView(R.id.image_view_wrapper_item_post_compact_right_thumbnail) + RelativeLayout relativeLayout; + @BindView(R.id.progress_bar_item_post_compact_right_thumbnail) + ProgressBar progressBar; + @BindView(R.id.image_view_item_post_compact_right_thumbnail) + ImageView imageView; + @BindView(R.id.play_button_image_view_item_post_compact_right_thumbnail) + ImageView playButtonImageView; + @BindView(R.id.frame_layout_image_view_no_preview_link_item_post_compact_right_thumbnail) + FrameLayout noPreviewLinkImageFrameLayout; + @BindView(R.id.image_view_no_preview_link_item_post_compact_right_thumbnail) + ImageView noPreviewLinkImageView; + @BindView(R.id.barrier2) + Barrier imageBarrier; + @BindView(R.id.bottom_constraint_layout_item_post_compact_right_thumbnail) + ConstraintLayout bottomConstraintLayout; + @BindView(R.id.plus_button_item_post_compact_right_thumbnail) + ImageView upvoteButton; + @BindView(R.id.score_text_view_item_post_compact_right_thumbnail) + TextView scoreTextView; + @BindView(R.id.minus_button_item_post_compact_right_thumbnail) + ImageView downvoteButton; + @BindView(R.id.comments_count_item_post_compact_right_thumbnail) + TextView commentsCountTextView; + @BindView(R.id.save_button_item_post_compact_right_thumbnail) + ImageView saveButton; + @BindView(R.id.share_button_item_post_compact_right_thumbnail) + ImageView shareButton; + @BindView(R.id.divider_item_post_compact_right_thumbnail) + View divider; - int leftMargin = (int) Utils.convertDpToPixel(16, mActivity); - ((ConstraintLayout.LayoutParams) relativeLayout.getLayoutParams()).leftMargin = leftMargin; - ((ConstraintLayout.LayoutParams) noPreviewLinkImageFrameLayout.getLayoutParams()).leftMargin = leftMargin; - } - - itemView.setBackgroundTintList(ColorStateList.valueOf(mCardViewBackgroundColor)); - postTimeTextView.setTextColor(mSecondaryTextColor); - titleTextView.setTextColor(mPostTitleColor); - stickiedPostImageView.setColorFilter(mStickiedPostIconTint, PorterDuff.Mode.SRC_IN); - typeTextView.setBackgroundColor(mPostTypeBackgroundColor); - typeTextView.setBorderColor(mPostTypeBackgroundColor); - typeTextView.setTextColor(mPostTypeTextColor); - spoilerTextView.setBackgroundColor(mSpoilerBackgroundColor); - spoilerTextView.setBorderColor(mSpoilerBackgroundColor); - spoilerTextView.setTextColor(mSpoilerTextColor); - nsfwTextView.setBackgroundColor(mNSFWBackgroundColor); - nsfwTextView.setBorderColor(mNSFWBackgroundColor); - nsfwTextView.setTextColor(mNSFWTextColor); - flairTextView.setBackgroundColor(mFlairBackgroundColor); - flairTextView.setBorderColor(mFlairBackgroundColor); - flairTextView.setTextColor(mFlairTextColor); - awardsTextView.setBackgroundColor(mAwardsBackgroundColor); - awardsTextView.setBorderColor(mAwardsBackgroundColor); - awardsTextView.setTextColor(mAwardsTextColor); - archivedImageView.setColorFilter(mArchivedIconTint, PorterDuff.Mode.SRC_IN); - lockedImageView.setColorFilter(mLockedIconTint, PorterDuff.Mode.SRC_IN); - crosspostImageView.setColorFilter(mCrosspostIconTint, PorterDuff.Mode.SRC_IN); - linkTextView.setTextColor(mSecondaryTextColor); - progressBar.setIndeterminateTintList(ColorStateList.valueOf(mColorAccent)); - noPreviewLinkImageView.setBackgroundColor(mNoPreviewLinkBackgroundColor); - upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - scoreTextView.setTextColor(mPostIconAndInfoColor); - downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - commentsCountTextView.setTextColor(mPostIconAndInfoColor); - commentsCountTextView.setCompoundDrawablesWithIntrinsicBounds(mCommentIcon, null, null, null); - saveButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - shareButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - divider.setBackgroundColor(mDividerColor); - - imageView.setClipToOutline(true); - noPreviewLinkImageFrameLayout.setClipToOutline(true); + PostCompactRightThumbnailViewHolder(View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + setBaseView(iconGifImageView, nameTextView, stickiedPostImageView, postTimeTextView, + titleAndImageConstraintLayout, titleTextView, typeTextView, archivedImageView, + lockedImageView, crosspostImageView, nsfwTextView, spoilerTextView, + flairTextView, awardsTextView, linkTextView, relativeLayout, progressBar, imageView, + playButtonImageView, noPreviewLinkImageFrameLayout, noPreviewLinkImageView, + imageBarrier, bottomConstraintLayout, upvoteButton, scoreTextView, downvoteButton, + commentsCountTextView, saveButton, shareButton, divider); } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/InterfacePreferenceFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/InterfacePreferenceFragment.java index 856a3579..c665478a 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/InterfacePreferenceFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/InterfacePreferenceFragment.java @@ -28,7 +28,7 @@ public class InterfacePreferenceFragment extends PreferenceFragmentCompat { SwitchPreference voteButtonsOnTheRightSwitch = findPreference(SharedPreferencesUtils.VOTE_BUTTONS_ON_THE_RIGHT_KEY); ListPreference defaultPostLayoutSwitch = findPreference(SharedPreferencesUtils.DEFAULT_POST_LAYOUT_KEY); SwitchPreference showDividerInCompactLayout = findPreference(SharedPreferencesUtils.SHOW_DIVIDER_IN_COMPACT_LAYOUT); - SwitchPreference showThumbnailOnTheRightInCompactLayout = findPreference(SharedPreferencesUtils.SHOW_THUMBNAIL_ON_THE_RIGHT_IN_COMPACT_LAYOUT); + SwitchPreference showThumbnailOnTheRightInCompactLayout = findPreference(SharedPreferencesUtils.SHOW_THUMBNAIL_ON_THE_LEFT_IN_COMPACT_LAYOUT); SwitchPreference showAbsoluteNumberOfVotes = findPreference(SharedPreferencesUtils.SHOW_ABSOLUTE_NUMBER_OF_VOTES); if (bottomAppBarSwitch != null) { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java index eb6402c2..245f2e1d 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java @@ -78,7 +78,7 @@ public class SharedPreferencesUtils { public static final String TIME_FORMAT_DEFAULT_VALUE = "MMM d, yyyy, HH:mm"; public static final String DEFAULT_POST_LAYOUT_KEY = "default_post_layout"; public static final String SHOW_DIVIDER_IN_COMPACT_LAYOUT = "show_divider_in_compact_layout"; - public static final String SHOW_THUMBNAIL_ON_THE_RIGHT_IN_COMPACT_LAYOUT = "show_thumbnail_on_the_right_in_compact_layout"; + public static final String SHOW_THUMBNAIL_ON_THE_LEFT_IN_COMPACT_LAYOUT = "show_thumbnail_on_the_left_in_compact_layout"; public static final String SWIPE_RIGHT_TO_GO_BACK_FROM_POST_DETAIL = "swipe_to_go_back_from_post_detail"; public static final String VOLUME_KEYS_NAVIGATE_COMMENTS = "volume_keys_navigate_comments"; public static final String VOLUME_KEYS_NAVIGATE_POSTS = "volume_keys_navigate_posts"; diff --git a/app/src/main/res/layout/item_comment.xml b/app/src/main/res/layout/item_comment.xml index 6129a269..dee6d50c 100644 --- a/app/src/main/res/layout/item_comment.xml +++ b/app/src/main/res/layout/item_comment.xml @@ -1,6 +1,7 @@ - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintWidth_default="wrap" + app:layout_constraintHorizontal_bias="0" /> + app:layout_constraintTop_toBottomOf="@id/author_text_view_item_post_comment" + app:layout_constraintWidth_default="wrap" + tools:visibility="visible" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eed910f4..c0cee539 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -375,7 +375,7 @@ Time Format Default Post Layout Show Divider in Compact Layout - Show Thumbnail on the Right in Compact Layout + Show Thumbnail on the Left in Compact Layout Swap Tap and Long Press in Comments Swipe Right to Go Back From Comments Lock Jump to Next Top-level Comment Button diff --git a/app/src/main/res/xml/interface_preference.xml b/app/src/main/res/xml/interface_preference.xml index 84d60853..e391a21c 100644 --- a/app/src/main/res/xml/interface_preference.xml +++ b/app/src/main/res/xml/interface_preference.xml @@ -46,8 +46,8 @@ + app:key="show_thumbnail_on_the_left_in_compact_layout" + app:title="@string/settings_show_thumbnail_on_the_left_in_compact_layout" />