Show the current image index in gallery in PostFragment.

This commit is contained in:
Docile-Alligator 2022-11-13 01:16:27 +11:00
parent 03a2784fb8
commit b85ed3c867
5 changed files with 69 additions and 34 deletions

View File

@ -1,7 +1,6 @@
package ml.docilealligator.infinityforreddit;
import android.content.SharedPreferences;
import android.util.Log;
import androidx.annotation.NonNull;

View File

@ -11,9 +11,7 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
@ -863,7 +861,8 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
((PostGalleryTypeViewHolder) holder).binding.noPreviewImageViewItemPostGalleryType.setVisibility(View.VISIBLE);
((PostGalleryTypeViewHolder) holder).binding.noPreviewImageViewItemPostGalleryType.setImageResource(R.drawable.ic_gallery_24dp);
} else {
((PostGalleryTypeViewHolder) holder).binding.galleryRecyclerViewItemPostGalleryType.setVisibility(View.VISIBLE);
((PostGalleryTypeViewHolder) holder).binding.galleryFrameLayoutItemPostGalleryType.setVisibility(View.VISIBLE);
((PostGalleryTypeViewHolder) holder).binding.imageIndexTextViewItemPostGalleryType.setText(mActivity.getString(R.string.image_index_in_gallery, 1, post.getGallery().size()));
Post.Preview preview = getSuitablePreview(post.getPreviews());
if (preview != null) {
if (mFixedHeightPreviewInCard || (preview.getPreviewWidth() <= 0 || preview.getPreviewHeight() <= 0)) {
@ -1890,7 +1889,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
((PostWithPreviewTypeViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.GONE);
((PostWithPreviewTypeViewHolder) holder).linkTextView.setVisibility(View.GONE);
} else if (holder instanceof PostGalleryTypeViewHolder) {
((PostGalleryTypeViewHolder) holder).binding.galleryRecyclerViewItemPostGalleryType.setVisibility(View.GONE);
((PostGalleryTypeViewHolder) holder).binding.galleryFrameLayoutItemPostGalleryType.setVisibility(View.GONE);
((PostGalleryTypeViewHolder) holder).binding.noPreviewImageViewItemPostGalleryType.setVisibility(View.GONE);
} else if (holder instanceof PostTextTypeViewHolder) {
((PostTextTypeViewHolder) holder).contentTextView.setText("");
@ -3134,6 +3133,10 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
binding.saveButtonItemPostGalleryType,
binding.shareButtonItemPostGalleryType);
binding.imageIndexTextViewItemPostGalleryType.setTextColor(mMediaIndicatorIconTint);
binding.imageIndexTextViewItemPostGalleryType.setBackgroundColor(mMediaIndicatorBackgroundColor);
binding.imageIndexTextViewItemPostGalleryType.setBorderColor(mMediaIndicatorBackgroundColor);
adapter = new PostGalleryTypeImageRecyclerViewAdapter(mGlide, mActivity.typeface,
mSaveMemoryCenterInsideDownsampleStrategy, mColorAccent, mPrimaryTextColor, mScale,
galleryItemIndex -> {
@ -3149,7 +3152,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
binding.galleryRecyclerViewItemPostGalleryType.setAdapter(adapter);
new PagerSnapHelper().attachToRecyclerView(binding.galleryRecyclerViewItemPostGalleryType);
binding.galleryRecyclerViewItemPostGalleryType.setRecycledViewPool(mGalleryRecycledViewPool);
binding.galleryRecyclerViewItemPostGalleryType.setLayoutManager(new SwipeLockLinearLayoutManager(
SwipeLockLinearLayoutManager layoutManager = new SwipeLockLinearLayoutManager(
mActivity, RecyclerView.HORIZONTAL, false, new SwipeLockInterface() {
@Override
public void lockSwipe() {
@ -3167,17 +3170,28 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
public void setSwipeLocked(boolean swipeLocked) {
PostGalleryTypeViewHolder.this.swipeLocked = swipeLocked;
}
}));
});
binding.galleryRecyclerViewItemPostGalleryType.setLayoutManager(layoutManager);
binding.galleryRecyclerViewItemPostGalleryType.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
binding.imageIndexTextViewItemPostGalleryType.setText(mActivity.getString(R.string.image_index_in_gallery, layoutManager.findFirstVisibleItemPosition() + 1, post.getGallery().size()));
}
});
binding.getRoot().setOnTouchListener((view, motionEvent) -> {
swipeLocked = false;
return false;
});
binding.bottomConstraintLayoutItemPostGalleryType.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
binding.bottomConstraintLayoutItemPostGalleryType.setOnTouchListener((view, motionEvent) -> {
swipeLocked = false;
return false;
}
});
binding.noPreviewImageViewItemPostGalleryType.setOnClickListener(view -> {

View File

@ -38,7 +38,7 @@ public class SwipeLockFrameLayout extends FrameLayout implements SwipeLockView {
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
updateSwipeLock(ev);
return true;
return false;
}
@SuppressLint("ClickableViewAccessibility") // we are just listening to touch events

View File

@ -196,12 +196,32 @@
</com.nex3z.flowlayout.FlowLayout>
<FrameLayout
android:id="@+id/gallery_frame_layout_item_post_gallery_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/gallery_recycler_view_item_post_gallery_type"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" />
<com.libRG.CustomTextView
android:id="@+id/image_index_text_view_item_post_gallery_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:textSize="?attr/font_12"
android:fontFamily="?attr/font_family"
android:padding="4dp"
app:lib_setRadius="6dp"
app:lib_setRoundedView="true"
app:lib_setShape="rectangle" />
</FrameLayout>
<ImageView
android:id="@+id/no_preview_image_view_item_post_gallery_type"
android:layout_width="match_parent"

View File

@ -25,12 +25,12 @@
<string name="edit_multi_reddit_activity_label">Edit Multireddit</string>
<string name="selected_subeddits_activity_label">Selected Subreddits</string>
<string name="report_activity_label">Report</string>
<string name="view_imgur_media_activity_image_label">Image %1$,d/%2$d</string>
<string name="view_imgur_media_activity_video_label">Video %1$,d/%2$d</string>
<string name="view_imgur_media_activity_image_label">Image %1$d/%2$d</string>
<string name="view_imgur_media_activity_video_label">Video %1$d/%2$d</string>
<string name="send_private_message_activity_label">Send PM</string>
<string name="view_reddit_gallery_activity_image_label">Image %1$,d/%2$d</string>
<string name="view_reddit_gallery_activity_gif_label">Gif %1$,d/%2$d</string>
<string name="view_reddit_gallery_activity_video_label">Video %1$,d/%2$d</string>
<string name="view_reddit_gallery_activity_image_label">Image %1$d/%2$d</string>
<string name="view_reddit_gallery_activity_gif_label">Gif %1$d/%2$d</string>
<string name="view_reddit_gallery_activity_video_label">Video %1$d/%2$d</string>
<string name="submit_crosspost_activity_label">Crosspost</string>
<string name="give_award_activity_label">Give Award</string>
<string name="subreddit_filter_popular_and_all_activity_label">r/all and r/popular</string>
@ -201,7 +201,7 @@
<string name="title_required">The post needs a good title</string>
<string name="link_required">Hey where is the link?</string>
<string name="select_an_image">Please select an image first</string>
<string name="voting_length">Voting length: %1$,d days</string>
<string name="voting_length">Voting length: %1$d days</string>
<string name="posting">Posting</string>
<string name="post_failed">Could not post it</string>
<string name="error_processing_image">Error processing image</string>
@ -358,7 +358,7 @@
<string name="notification_summary_message">New Message</string>
<string name="notification_summary_subreddit">Subreddit</string>
<string name="notification_summary_award">Award</string>
<string name="notification_new_messages">%1$,d New Messages</string>
<string name="notification_new_messages">%1$d New Messages</string>
<string name="label_account">Account</string>
<string name="label_reddit">Reddit</string>
@ -382,9 +382,9 @@
<string name="settings_mute_autoplaying_videos_title">Mute Autoplaying Videos</string>
<string name="settings_autoplay_nsfw_videos_title">Autoplay NSFW Videos</string>
<string name="settings_start_autoplay_visible_area_offset_portrait_title">Autoplay Videos Visible Area Offset (Portrait)</string>
<string name="settings_start_autoplay_visible_area_offset_portrait_summary">Start autoplaying videos when %1$,d%% of them are visible</string>
<string name="settings_start_autoplay_visible_area_offset_portrait_summary">Start autoplaying videos when %1$d%% of them are visible</string>
<string name="settings_start_autoplay_visible_area_offset_landscape_title">Autoplay Videos Visible Area Offset (Landscape)</string>
<string name="settings_start_autoplay_visible_area_offset_landscape_summary">Start autoplaying videos when %1$,d%% of them are visible</string>
<string name="settings_start_autoplay_visible_area_offset_landscape_summary">Start autoplaying videos when %1$d%% of them are visible</string>
<string name="settings_immersive_interface_title">Immersive Interface</string>
<string name="settings_immersive_interface_summary">Does Not Apply to All Pages</string>
<string name="settings_immersive_interface_ignore_nav_bar_title">Ignore Navigation Bar in Immersive Interface</string>
@ -636,7 +636,7 @@
<string name="settings_hide_text_post_content">Hide Text Post Content</string>
<string name="settings_hide_comment_awards_title">Hide Comment Awards</string>
<string name="settings_show_fewer_toolbar_options_threshold_title">Show Fewer Toolbar Options Starting From</string>
<string name="settings_show_fewer_toolbar_options_threshold_summary">Level %1$,d</string>
<string name="settings_show_fewer_toolbar_options_threshold_summary">Level %1$d</string>
<string name="settings_show_author_avatar_title">Show Author Avatar</string>
<string name="settings_reddit_user_agreement_title">Reddit User Agreement</string>
<string name="settings_always_show_child_comment_count_title">Always Show the Number of Child Comments</string>
@ -688,15 +688,15 @@
<string name="elapsed_time_just_now">Just Now</string>
<string name="elapsed_time_a_minute_ago">1 Minute</string>
<string name="elapsed_time_minutes_ago">%1$,d Minutes</string>
<string name="elapsed_time_minutes_ago">%1$d Minutes</string>
<string name="elapsed_time_an_hour_ago">1 Hour</string>
<string name="elapsed_time_hours_ago">%1$,d Hours</string>
<string name="elapsed_time_hours_ago">%1$d Hours</string>
<string name="elapsed_time_yesterday">Yesterday</string>
<string name="elapsed_time_days_ago">%1$,d Days</string>
<string name="elapsed_time_days_ago">%1$d Days</string>
<string name="elapsed_time_a_month_ago">1 Month</string>
<string name="elapsed_time_months_ago">%1$,d Months</string>
<string name="elapsed_time_months_ago">%1$d Months</string>
<string name="elapsed_time_a_year_ago">1 Year</string>
<string name="elapsed_time_years_ago">%1$,d Years</string>
<string name="elapsed_time_years_ago">%1$d Years</string>
<string name="error_getting_multi_reddit_data">Error getting multireddit data</string>
<string name="error_loading_multi_reddit_list">Cannot sync multireddits</string>
@ -1077,7 +1077,7 @@
<string name="give_award_dialog_title">Give Award?</string>
<string name="anonymous">Anonymous</string>
<string name="give_award_error_message">Code: %1$,d/\n Message: %2$s</string>
<string name="give_award_error_message">Code: %1$d/\n Message: %2$s</string>
<string name="give_award_success">Award given</string>
<string name="give_award_failed">Failed</string>
@ -1315,4 +1315,6 @@
<string name="load_more_posts_failed">Failed to load more posts.\nTap to retry.</string>
<string name="no_more_posts">No more posts</string>
<string name="image_index_in_gallery">%1$d/%2$d</string>
</resources>