mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-27 03:18:24 +01:00
Swipe between gallery images in PostFragment.
This commit is contained in:
parent
0f1c4d1e11
commit
03a2784fb8
@ -13,6 +13,7 @@ import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.r0adkll.slidr.Slidr;
|
||||
import com.r0adkll.slidr.model.SlidrInterface;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
@ -53,6 +54,7 @@ public class AccountPostsActivity extends BaseActivity implements SortTypeSelect
|
||||
SharedPreferences mCurrentAccountSharedPreferences;
|
||||
@Inject
|
||||
CustomThemeWrapper mCustomThemeWrapper;
|
||||
private SlidrInterface mSlidrInterface;
|
||||
private String mAccessToken;
|
||||
private String mAccountName;
|
||||
private String mUserWhere;
|
||||
@ -74,7 +76,7 @@ public class AccountPostsActivity extends BaseActivity implements SortTypeSelect
|
||||
applyCustomTheme();
|
||||
|
||||
if (mSharedPreferences.getBoolean(SharedPreferencesUtils.SWIPE_RIGHT_TO_GO_BACK, true)) {
|
||||
Slidr.attach(this);
|
||||
mSlidrInterface = Slidr.attach(this);
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
@ -239,4 +241,18 @@ public class AccountPostsActivity extends BaseActivity implements SortTypeSelect
|
||||
((PostFragment) mFragment).goBackToTop();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.lock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unlockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -229,12 +229,14 @@ public class AccountSavedThingActivity extends BaseActivity implements ActivityT
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.lock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unlockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.unlock();
|
||||
|
@ -391,4 +391,13 @@ public abstract class BaseActivity extends AppCompatActivity implements CustomFo
|
||||
this.titleTypeface = titleTypeface;
|
||||
this.contentTypeface = contentTypeface;
|
||||
}
|
||||
|
||||
|
||||
public void lockSwipeRightToGoBack() {
|
||||
|
||||
}
|
||||
|
||||
public void unlockSwipeRightToGoBack() {
|
||||
|
||||
}
|
||||
}
|
@ -41,12 +41,11 @@ import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed;
|
||||
import ml.docilealligator.infinityforreddit.customviews.MarkwonLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockScrollView;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockInterface;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
|
||||
import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.Utils;
|
||||
|
||||
public class FullMarkdownActivity extends BaseActivity {
|
||||
|
||||
@ -145,7 +144,7 @@ public class FullMarkdownActivity extends BaseActivity {
|
||||
miscPlugin, markdownColor, spoilerBackgroundColor, null);
|
||||
|
||||
MarkwonAdapter markwonAdapter = MarkdownUtils.createTablesAdapter();
|
||||
LinearLayoutManagerBugFixed linearLayoutManager = new MarkwonLinearLayoutManager(this, new SwipeLockScrollView.SwipeLockInterface() {
|
||||
LinearLayoutManagerBugFixed linearLayoutManager = new SwipeLockLinearLayoutManager(this, new SwipeLockInterface() {
|
||||
@Override
|
||||
public void lockSwipe() {
|
||||
if (mSlidrInterface != null) {
|
||||
|
@ -227,12 +227,14 @@ public class HistoryActivity extends BaseActivity implements ActivityToolbarInte
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.lock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unlockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.unlock();
|
||||
|
@ -393,13 +393,15 @@ public class InboxActivity extends BaseActivity implements ActivityToolbarInterf
|
||||
}
|
||||
}
|
||||
|
||||
private void lockSwipeRightToGoBack() {
|
||||
@Override
|
||||
public void lockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.lock();
|
||||
}
|
||||
}
|
||||
|
||||
private void unlockSwipeRightToGoBack() {
|
||||
@Override
|
||||
public void unlockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.unlock();
|
||||
}
|
||||
|
@ -913,13 +913,15 @@ public class SearchResultActivity extends BaseActivity implements SortTypeSelect
|
||||
}
|
||||
}
|
||||
|
||||
private void lockSwipeRightToGoBack() {
|
||||
@Override
|
||||
public void lockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.lock();
|
||||
}
|
||||
}
|
||||
|
||||
private void unlockSwipeRightToGoBack() {
|
||||
@Override
|
||||
public void unlockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.unlock();
|
||||
}
|
||||
|
@ -449,13 +449,15 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
|
||||
}
|
||||
}
|
||||
|
||||
private void lockSwipeRightToGoBack() {
|
||||
@Override
|
||||
public void lockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.lock();
|
||||
}
|
||||
}
|
||||
|
||||
private void unlockSwipeRightToGoBack() {
|
||||
@Override
|
||||
public void unlockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.unlock();
|
||||
}
|
||||
|
@ -916,12 +916,14 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.lock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unlockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.unlock();
|
||||
|
@ -60,6 +60,7 @@ public class ViewRedditGalleryActivity extends AppCompatActivity implements SetA
|
||||
public static final String EXTRA_REDDIT_GALLERY = "ERG";
|
||||
public static final String EXTRA_SUBREDDIT_NAME = "ESN";
|
||||
public static final String EXTRA_IS_NSFW = "EIN";
|
||||
public static final String EXTRA_GALLERY_ITEM_INDEX = "EGII";
|
||||
|
||||
@BindView(R.id.hauler_view_view_reddit_gallery_activity)
|
||||
HaulerView haulerView;
|
||||
|
@ -1547,13 +1547,15 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
|
||||
InsertReadPost.insertReadPost(mRedditDataRoomDatabase, mExecutor, mAccountName, post.getId());
|
||||
}
|
||||
|
||||
private void lockSwipeRightToGoBack() {
|
||||
@Override
|
||||
public void lockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.lock();
|
||||
}
|
||||
}
|
||||
|
||||
private void unlockSwipeRightToGoBack() {
|
||||
@Override
|
||||
public void unlockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.unlock();
|
||||
}
|
||||
|
@ -1748,12 +1748,14 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.lock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unlockSwipeRightToGoBack() {
|
||||
if (mSlidrInterface != null) {
|
||||
mSlidrInterface.unlock();
|
||||
|
@ -50,8 +50,8 @@ import ml.docilealligator.infinityforreddit.apis.RedditAPI;
|
||||
import ml.docilealligator.infinityforreddit.bottomsheetfragments.UrlMenuBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed;
|
||||
import ml.docilealligator.infinityforreddit.customviews.MarkwonLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockScrollView;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockInterface;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
|
||||
import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.JSONUtils;
|
||||
@ -178,7 +178,7 @@ public class WikiActivity extends BaseActivity {
|
||||
miscPlugin, markdownColor, spoilerBackgroundColor, onLinkLongClickListener);
|
||||
|
||||
markwonAdapter = MarkdownUtils.createTablesAdapter();
|
||||
LinearLayoutManagerBugFixed linearLayoutManager = new MarkwonLinearLayoutManager(this, new SwipeLockScrollView.SwipeLockInterface() {
|
||||
LinearLayoutManagerBugFixed linearLayoutManager = new SwipeLockLinearLayoutManager(this, new SwipeLockInterface() {
|
||||
@Override
|
||||
public void lockSwipe() {
|
||||
if (mSlidrInterface != null) {
|
||||
|
@ -53,9 +53,9 @@ import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.customviews.CommentIndentationView;
|
||||
import ml.docilealligator.infinityforreddit.customviews.CustomMarkwonAdapter;
|
||||
import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed;
|
||||
import ml.docilealligator.infinityforreddit.customviews.MarkwonLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SpoilerOnClickTextView;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockScrollView;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockInterface;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.APIUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||
@ -502,7 +502,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
||||
});
|
||||
|
||||
commentMarkdownView.setRecycledViewPool(recycledViewPool);
|
||||
LinearLayoutManagerBugFixed linearLayoutManager = new MarkwonLinearLayoutManager(mActivity, new SwipeLockScrollView.SwipeLockInterface() {
|
||||
LinearLayoutManagerBugFixed linearLayoutManager = new SwipeLockLinearLayoutManager(mActivity, new SwipeLockInterface() {
|
||||
@Override
|
||||
public void lockSwipe() {
|
||||
if (mActivity instanceof AccountSavedThingActivity) {
|
||||
|
@ -62,9 +62,9 @@ import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.customviews.CommentIndentationView;
|
||||
import ml.docilealligator.infinityforreddit.customviews.CustomMarkwonAdapter;
|
||||
import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed;
|
||||
import ml.docilealligator.infinityforreddit.customviews.MarkwonLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SpoilerOnClickTextView;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockScrollView;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockInterface;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.fragments.ViewPostDetailFragment;
|
||||
import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils;
|
||||
import ml.docilealligator.infinityforreddit.post.Post;
|
||||
@ -1268,7 +1268,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
}
|
||||
|
||||
commentMarkdownView.setRecycledViewPool(recycledViewPool);
|
||||
LinearLayoutManagerBugFixed linearLayoutManager = new MarkwonLinearLayoutManager(mActivity, new SwipeLockScrollView.SwipeLockInterface() {
|
||||
LinearLayoutManagerBugFixed linearLayoutManager = new SwipeLockLinearLayoutManager(mActivity, new SwipeLockInterface() {
|
||||
@Override
|
||||
public void lockSwipe() {
|
||||
((ViewPostDetailActivity) mActivity).lockSwipeRightToGoBack();
|
||||
|
@ -89,8 +89,8 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.ShareLinkBottom
|
||||
import ml.docilealligator.infinityforreddit.bottomsheetfragments.UrlMenuBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.customviews.AspectRatioGifImageView;
|
||||
import ml.docilealligator.infinityforreddit.customviews.MarkwonLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockScrollView;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockInterface;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.fragments.ViewPostDetailFragment;
|
||||
import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils;
|
||||
import ml.docilealligator.infinityforreddit.post.Post;
|
||||
@ -1191,7 +1191,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
mActivity.startActivity(intent);
|
||||
});
|
||||
|
||||
mContentMarkdownView.setLayoutManager(new MarkwonLinearLayoutManager(mActivity, new SwipeLockScrollView.SwipeLockInterface() {
|
||||
mContentMarkdownView.setLayoutManager(new SwipeLockLinearLayoutManager(mActivity, new SwipeLockInterface() {
|
||||
@Override
|
||||
public void lockSwipe() {
|
||||
((ViewPostDetailActivity) mActivity).lockSwipeRightToGoBack();
|
||||
|
@ -0,0 +1,155 @@
|
||||
package ml.docilealligator.infinityforreddit.adapters;
|
||||
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.bumptech.glide.RequestBuilder;
|
||||
import com.bumptech.glide.RequestManager;
|
||||
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.Target;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import jp.wasabeef.glide.transformations.BlurTransformation;
|
||||
import ml.docilealligator.infinityforreddit.SaveMemoryCenterInisdeDownsampleStrategy;
|
||||
import ml.docilealligator.infinityforreddit.databinding.ItemGalleryImageInPostFeedBinding;
|
||||
import ml.docilealligator.infinityforreddit.post.Post;
|
||||
|
||||
public class PostGalleryTypeImageRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
private RequestManager glide;
|
||||
private Typeface typeface;
|
||||
private SaveMemoryCenterInisdeDownsampleStrategy saveMemoryCenterInisdeDownsampleStrategy;
|
||||
private int mColorAccent;
|
||||
private int mPrimaryTextColor;
|
||||
private float mScale;
|
||||
private ArrayList<Post.Gallery> galleryImages;
|
||||
private boolean blurImage;
|
||||
private float ratio;
|
||||
private OnItemClickListener onItemClickListener;
|
||||
|
||||
public PostGalleryTypeImageRecyclerViewAdapter(RequestManager glide, Typeface typeface,
|
||||
SaveMemoryCenterInisdeDownsampleStrategy saveMemoryCenterInisdeDownsampleStrategy,
|
||||
int mColorAccent, int mPrimaryTextColor, float scale,
|
||||
OnItemClickListener onItemClickListener) {
|
||||
this.glide = glide;
|
||||
this.typeface = typeface;
|
||||
this.saveMemoryCenterInisdeDownsampleStrategy = saveMemoryCenterInisdeDownsampleStrategy;
|
||||
this.mColorAccent = mColorAccent;
|
||||
this.mPrimaryTextColor = mPrimaryTextColor;
|
||||
this.mScale = scale;
|
||||
this.onItemClickListener = onItemClickListener;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
return new ImageViewHolder(ItemGalleryImageInPostFeedBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||
if (holder instanceof ImageViewHolder) {
|
||||
if (ratio < 0) {
|
||||
int height = (int) (400 * mScale);
|
||||
((ImageViewHolder) holder).binding.imageViewItemGalleryImageInPostFeed.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||
((ImageViewHolder) holder).binding.imageViewItemGalleryImageInPostFeed.getLayoutParams().height = height;
|
||||
} else {
|
||||
((ImageViewHolder) holder).binding.imageViewItemGalleryImageInPostFeed.setRatio(ratio);
|
||||
}
|
||||
((ImageViewHolder) holder).binding.errorTextViewItemGalleryImageInPostFeed.setVisibility(View.GONE);
|
||||
((ImageViewHolder) holder).binding.progressBarItemGalleryImageInPostFeed.setVisibility(View.VISIBLE);
|
||||
loadImage((ImageViewHolder) holder);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return galleryImages == null ? 0 : galleryImages.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
||||
super.onViewRecycled(holder);
|
||||
}
|
||||
|
||||
private void loadImage(ImageViewHolder holder) {
|
||||
holder.binding.imageViewItemGalleryImageInPostFeed.setRatio(ratio);
|
||||
RequestBuilder<Drawable> imageRequestBuilder = glide.load(galleryImages.get(holder.getBindingAdapterPosition()).url).listener(new RequestListener<>() {
|
||||
@Override
|
||||
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
|
||||
holder.binding.progressBarItemGalleryImageInPostFeed.setVisibility(View.GONE);
|
||||
holder.binding.errorTextViewItemGalleryImageInPostFeed.setVisibility(View.VISIBLE);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
|
||||
holder.binding.errorTextViewItemGalleryImageInPostFeed.setVisibility(View.GONE);
|
||||
holder.binding.progressBarItemGalleryImageInPostFeed.setVisibility(View.GONE);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
if (blurImage) {
|
||||
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10)))
|
||||
.into(holder.binding.imageViewItemGalleryImageInPostFeed);
|
||||
} else {
|
||||
imageRequestBuilder.centerInside().downsample(saveMemoryCenterInisdeDownsampleStrategy).into(holder.binding.imageViewItemGalleryImageInPostFeed);
|
||||
}
|
||||
}
|
||||
|
||||
public void setGalleryImages(ArrayList<Post.Gallery> galleryImages) {
|
||||
this.galleryImages = galleryImages;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void setBlurImage(boolean blurImage) {
|
||||
this.blurImage = blurImage;
|
||||
}
|
||||
|
||||
public void setRatio(float ratio) {
|
||||
this.ratio = ratio;
|
||||
}
|
||||
|
||||
class ImageViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
ItemGalleryImageInPostFeedBinding binding;
|
||||
|
||||
public ImageViewHolder(ItemGalleryImageInPostFeedBinding binding) {
|
||||
super(binding.getRoot());
|
||||
|
||||
this.binding = binding;
|
||||
|
||||
if (typeface != null) {
|
||||
binding.errorTextViewItemGalleryImageInPostFeed.setTypeface(typeface);
|
||||
}
|
||||
binding.progressBarItemGalleryImageInPostFeed.setIndeterminateTintList(ColorStateList.valueOf(mColorAccent));
|
||||
binding.errorTextViewItemGalleryImageInPostFeed.setTextColor(mPrimaryTextColor);
|
||||
|
||||
binding.imageViewItemGalleryImageInPostFeed.setOnClickListener(view -> {
|
||||
onItemClickListener.onClick(getBindingAdapterPosition());
|
||||
});
|
||||
|
||||
binding.errorTextViewItemGalleryImageInPostFeed.setOnClickListener(view -> {
|
||||
binding.progressBarItemGalleryImageInPostFeed.setVisibility(View.VISIBLE);
|
||||
binding.errorTextViewItemGalleryImageInPostFeed.setVisibility(View.GONE);
|
||||
loadImage(this);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public interface OnItemClickListener {
|
||||
void onClick(int galleryItemIndex);
|
||||
}
|
||||
}
|
@ -11,7 +11,9 @@ 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;
|
||||
@ -32,6 +34,8 @@ import androidx.core.content.ContextCompat;
|
||||
import androidx.paging.PagingDataAdapter;
|
||||
import androidx.recyclerview.widget.DiffUtil;
|
||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
import androidx.recyclerview.widget.LinearSnapHelper;
|
||||
import androidx.recyclerview.widget.PagerSnapHelper;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
@ -81,6 +85,9 @@ import ml.docilealligator.infinityforreddit.apis.StreamableAPI;
|
||||
import ml.docilealligator.infinityforreddit.bottomsheetfragments.ShareLinkBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.customviews.AspectRatioGifImageView;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockInterface;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.databinding.ItemPostGalleryTypeBinding;
|
||||
import ml.docilealligator.infinityforreddit.events.PostUpdateEventToPostDetailFragment;
|
||||
import ml.docilealligator.infinityforreddit.fragments.PostFragment;
|
||||
import ml.docilealligator.infinityforreddit.post.Post;
|
||||
@ -107,12 +114,13 @@ import retrofit2.Retrofit;
|
||||
public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerView.ViewHolder> implements CacheManager {
|
||||
private static final int VIEW_TYPE_POST_CARD_VIDEO_AUTOPLAY_TYPE = 1;
|
||||
private static final int VIEW_TYPE_POST_CARD_WITH_PREVIEW_TYPE = 2;
|
||||
private static final int VIEW_TYPE_POST_CARD_TEXT_TYPE = 3;
|
||||
private static final int VIEW_TYPE_POST_COMPACT = 4;
|
||||
private static final int VIEW_TYPE_POST_GALLERY = 5;
|
||||
private static final int VIEW_TYPE_POST_CARD_2_VIDEO_AUTOPLAY_TYPE = 6;
|
||||
private static final int VIEW_TYPE_POST_CARD_2_WITH_PREVIEW_TYPE = 7;
|
||||
private static final int VIEW_TYPE_POST_CARD_2_TEXT_TYPE = 8;
|
||||
private static final int VIEW_TYPE_POST_CARD_GALLERY_TYPE = 3;
|
||||
private static final int VIEW_TYPE_POST_CARD_TEXT_TYPE = 4;
|
||||
private static final int VIEW_TYPE_POST_COMPACT = 5;
|
||||
private static final int VIEW_TYPE_POST_GALLERY = 6;
|
||||
private static final int VIEW_TYPE_POST_CARD_2_VIDEO_AUTOPLAY_TYPE = 7;
|
||||
private static final int VIEW_TYPE_POST_CARD_2_WITH_PREVIEW_TYPE = 8;
|
||||
private static final int VIEW_TYPE_POST_CARD_2_TEXT_TYPE = 9;
|
||||
|
||||
private static final DiffUtil.ItemCallback<Post> DIFF_CALLBACK = new DiffUtil.ItemCallback<Post>() {
|
||||
@Override
|
||||
@ -217,6 +225,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
||||
private ExoCreator mExoCreator;
|
||||
private Callback mCallback;
|
||||
private boolean canPlayVideo = true;
|
||||
private RecyclerView.RecycledViewPool mGalleryRecycledViewPool;
|
||||
|
||||
public PostRecyclerViewAdapter(BaseActivity activity, PostFragment fragment, Executor executor, Retrofit oauthRetrofit,
|
||||
Retrofit gfycatRetrofit, Retrofit redgifsRetrofit, Retrofit streambleRetrofit,
|
||||
@ -345,6 +354,8 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
||||
mLocale = locale;
|
||||
mExoCreator = exoCreator;
|
||||
mCallback = callback;
|
||||
|
||||
mGalleryRecycledViewPool = new RecyclerView.RecycledViewPool();
|
||||
}
|
||||
}
|
||||
|
||||
@ -368,8 +379,9 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
||||
return VIEW_TYPE_POST_CARD_WITH_PREVIEW_TYPE;
|
||||
case Post.GIF_TYPE:
|
||||
case Post.IMAGE_TYPE:
|
||||
case Post.GALLERY_TYPE:
|
||||
return VIEW_TYPE_POST_CARD_WITH_PREVIEW_TYPE;
|
||||
case Post.GALLERY_TYPE:
|
||||
return VIEW_TYPE_POST_CARD_GALLERY_TYPE;
|
||||
case Post.LINK_TYPE:
|
||||
case Post.NO_PREVIEW_LINK_TYPE:
|
||||
switch (mDefaultLinkPostLayout) {
|
||||
@ -448,6 +460,8 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
||||
return new PostVideoAutoplayViewHolder(LayoutInflater.from(parent.getContext()).inflate(mLegacyAutoplayVideoControllerUI ? R.layout.item_post_video_type_autoplay_legacy_controller : R.layout.item_post_video_type_autoplay, parent, false));
|
||||
} else if (viewType == VIEW_TYPE_POST_CARD_WITH_PREVIEW_TYPE) {
|
||||
return new PostWithPreviewTypeViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_with_preview, parent, false));
|
||||
} else if (viewType == VIEW_TYPE_POST_CARD_GALLERY_TYPE) {
|
||||
return new PostGalleryTypeViewHolder(ItemPostGalleryTypeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
|
||||
} else if (viewType == VIEW_TYPE_POST_CARD_TEXT_TYPE) {
|
||||
return new PostTextTypeViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_text, parent, false));
|
||||
} else if (viewType == VIEW_TYPE_POST_COMPACT) {
|
||||
@ -781,10 +795,6 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
||||
((PostWithPreviewTypeViewHolder) holder).noPreviewLinkImageView.setVisibility(View.VISIBLE);
|
||||
((PostWithPreviewTypeViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_link);
|
||||
}
|
||||
} else if (post.getPostType() == Post.GALLERY_TYPE) {
|
||||
((PostWithPreviewTypeViewHolder) holder).typeTextView.setText(mActivity.getString(R.string.gallery));
|
||||
((PostWithPreviewTypeViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.VISIBLE);
|
||||
((PostWithPreviewTypeViewHolder) holder).videoOrGifIndicatorImageView.setImageDrawable(ContextCompat.getDrawable(mActivity, R.drawable.ic_gallery_24dp));
|
||||
}
|
||||
|
||||
if (post.getPostType() != Post.NO_PREVIEW_LINK_TYPE) {
|
||||
@ -801,8 +811,6 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
||||
((PostWithPreviewTypeViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.GONE);
|
||||
} else if (post.getPostType() == Post.LINK_TYPE) {
|
||||
((PostWithPreviewTypeViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_link);
|
||||
} else if (post.getPostType() == Post.GALLERY_TYPE) {
|
||||
((PostWithPreviewTypeViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_gallery_24dp);
|
||||
}
|
||||
} else if (mDataSavingMode && mOnlyDisablePreviewInVideoAndGifPosts && (post.getPostType() == Post.VIDEO_TYPE || post.getPostType() == Post.GIF_TYPE)) {
|
||||
((PostWithPreviewTypeViewHolder) holder).noPreviewLinkImageView.setVisibility(View.VISIBLE);
|
||||
@ -850,6 +858,26 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (holder instanceof PostGalleryTypeViewHolder) {
|
||||
if (mDataSavingMode && mDisableImagePreview) {
|
||||
((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);
|
||||
Post.Preview preview = getSuitablePreview(post.getPreviews());
|
||||
if (preview != null) {
|
||||
if (mFixedHeightPreviewInCard || (preview.getPreviewWidth() <= 0 || preview.getPreviewHeight() <= 0)) {
|
||||
((PostGalleryTypeViewHolder) holder).adapter.setRatio(-1);
|
||||
} else {
|
||||
((PostGalleryTypeViewHolder) holder).adapter.setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
|
||||
}
|
||||
} else {
|
||||
((PostGalleryTypeViewHolder) holder).adapter.setRatio(-1);
|
||||
}
|
||||
((PostGalleryTypeViewHolder) holder).adapter.setGalleryImages(post.getGallery());
|
||||
((PostGalleryTypeViewHolder) holder).adapter.setBlurImage(
|
||||
(post.isNSFW() && mNeedBlurNsfw && !(mDoNotBlurNsfwInNsfwSubreddits && mFragment != null && mFragment.getIsNsfwSubreddit())) || (post.isSpoiler() && mNeedBlurSpoiler));
|
||||
}
|
||||
} else if (holder instanceof PostTextTypeViewHolder) {
|
||||
if (!mHideTextPostContent && !post.isSpoiler() && post.getSelfTextPlainTrimmed() != null && !post.getSelfTextPlainTrimmed().equals("")) {
|
||||
((PostTextTypeViewHolder) holder).contentTextView.setVisibility(View.VISIBLE);
|
||||
@ -1861,6 +1889,9 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
||||
((PostWithPreviewTypeViewHolder) holder).progressBar.setVisibility(View.GONE);
|
||||
((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.noPreviewImageViewItemPostGalleryType.setVisibility(View.GONE);
|
||||
} else if (holder instanceof PostTextTypeViewHolder) {
|
||||
((PostTextTypeViewHolder) holder).contentTextView.setText("");
|
||||
((PostTextTypeViewHolder) holder).contentTextView.setTextColor(mPostContentColor);
|
||||
@ -2032,6 +2063,10 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
||||
}
|
||||
|
||||
private void openMedia(Post post) {
|
||||
openMedia(post, 0);
|
||||
}
|
||||
|
||||
private void openMedia(Post post, int galleryItemIndex) {
|
||||
if (canStartActivity) {
|
||||
canStartActivity = false;
|
||||
if (post.getPostType() == Post.VIDEO_TYPE) {
|
||||
@ -2086,6 +2121,7 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
||||
intent.putParcelableArrayListExtra(ViewRedditGalleryActivity.EXTRA_REDDIT_GALLERY, post.getGallery());
|
||||
intent.putExtra(ViewRedditGalleryActivity.EXTRA_SUBREDDIT_NAME, post.getSubredditName());
|
||||
intent.putExtra(ViewRedditGalleryActivity.EXTRA_IS_NSFW, post.isNSFW());
|
||||
intent.putExtra(ViewRedditGalleryActivity.EXTRA_GALLERY_ITEM_INDEX, galleryItemIndex);
|
||||
mActivity.startActivity(intent);
|
||||
}
|
||||
}
|
||||
@ -3067,6 +3103,100 @@ public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, RecyclerVie
|
||||
}
|
||||
}
|
||||
|
||||
public class PostGalleryTypeViewHolder extends PostBaseViewHolder {
|
||||
ItemPostGalleryTypeBinding binding;
|
||||
PostGalleryTypeImageRecyclerViewAdapter adapter;
|
||||
private boolean swipeLocked;
|
||||
|
||||
PostGalleryTypeViewHolder(ItemPostGalleryTypeBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.binding = binding;
|
||||
setBaseView(
|
||||
binding.iconGifImageViewItemPostGalleryType,
|
||||
binding.subredditNameTextViewItemPostGalleryType,
|
||||
binding.userTextViewItemPostGalleryType,
|
||||
binding.stickiedPostImageViewItemPostGalleryType,
|
||||
binding.postTimeTextViewItemPostGalleryType,
|
||||
binding.titleTextViewItemPostGalleryType,
|
||||
binding.typeTextViewItemPostGalleryType,
|
||||
binding.archivedImageViewItemPostGalleryType,
|
||||
binding.lockedImageViewItemPostGalleryType,
|
||||
binding.crosspostImageViewItemPostGalleryType,
|
||||
binding.nsfwTextViewItemPostGalleryType,
|
||||
binding.spoilerTextViewItemPostGalleryType,
|
||||
binding.flairTextViewItemPostGalleryType,
|
||||
binding.awardsTextViewItemPostGalleryType,
|
||||
binding.bottomConstraintLayoutItemPostGalleryType,
|
||||
binding.upvoteButtonItemPostGalleryType,
|
||||
binding.scoreTextViewItemPostGalleryType,
|
||||
binding.downvoteButtonItemPostGalleryType,
|
||||
binding.commentsCountTextViewItemPostGalleryType,
|
||||
binding.saveButtonItemPostGalleryType,
|
||||
binding.shareButtonItemPostGalleryType);
|
||||
|
||||
adapter = new PostGalleryTypeImageRecyclerViewAdapter(mGlide, mActivity.typeface,
|
||||
mSaveMemoryCenterInsideDownsampleStrategy, mColorAccent, mPrimaryTextColor, mScale,
|
||||
galleryItemIndex -> {
|
||||
int position = getBindingAdapterPosition();
|
||||
if (position < 0) {
|
||||
return;
|
||||
}
|
||||
if (post != null) {
|
||||
markPostRead(post, true);
|
||||
openMedia(post, galleryItemIndex);
|
||||
}
|
||||
});
|
||||
binding.galleryRecyclerViewItemPostGalleryType.setAdapter(adapter);
|
||||
new PagerSnapHelper().attachToRecyclerView(binding.galleryRecyclerViewItemPostGalleryType);
|
||||
binding.galleryRecyclerViewItemPostGalleryType.setRecycledViewPool(mGalleryRecycledViewPool);
|
||||
binding.galleryRecyclerViewItemPostGalleryType.setLayoutManager(new SwipeLockLinearLayoutManager(
|
||||
mActivity, RecyclerView.HORIZONTAL, false, new SwipeLockInterface() {
|
||||
@Override
|
||||
public void lockSwipe() {
|
||||
mActivity.lockSwipeRightToGoBack();
|
||||
swipeLocked = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unlockSwipe() {
|
||||
mActivity.unlockSwipeRightToGoBack();
|
||||
swipeLocked = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSwipeLocked(boolean swipeLocked) {
|
||||
PostGalleryTypeViewHolder.this.swipeLocked = swipeLocked;
|
||||
}
|
||||
}));
|
||||
binding.getRoot().setOnTouchListener((view, motionEvent) -> {
|
||||
swipeLocked = false;
|
||||
return false;
|
||||
});
|
||||
binding.bottomConstraintLayoutItemPostGalleryType.setOnTouchListener(new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View view, MotionEvent motionEvent) {
|
||||
swipeLocked = false;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
binding.noPreviewImageViewItemPostGalleryType.setOnClickListener(view -> {
|
||||
int position = getBindingAdapterPosition();
|
||||
if (position < 0) {
|
||||
return;
|
||||
}
|
||||
if (post != null) {
|
||||
markPostRead(post, true);
|
||||
openMedia(post, 0);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public boolean isSwipeLocked() {
|
||||
return swipeLocked;
|
||||
}
|
||||
}
|
||||
|
||||
class PostTextTypeViewHolder extends PostBaseViewHolder {
|
||||
@BindView(R.id.icon_gif_image_view_item_post_text_type)
|
||||
AspectRatioGifImageView iconGifImageView;
|
||||
|
@ -31,11 +31,9 @@ import ml.docilealligator.infinityforreddit.activities.BaseActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.LinkResolverActivity;
|
||||
import ml.docilealligator.infinityforreddit.bottomsheetfragments.UrlMenuBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed;
|
||||
import ml.docilealligator.infinityforreddit.customviews.MarkwonLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockScrollView;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockInterface;
|
||||
import ml.docilealligator.infinityforreddit.customviews.SwipeLockLinearLayoutManager;
|
||||
import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.Utils;
|
||||
|
||||
public class RulesRecyclerViewAdapter extends RecyclerView.Adapter<RulesRecyclerViewAdapter.RuleViewHolder> {
|
||||
private BaseActivity activity;
|
||||
@ -140,8 +138,8 @@ public class RulesRecyclerViewAdapter extends RecyclerView.Adapter<RulesRecycler
|
||||
shortNameTextView.setTypeface(activity.typeface);
|
||||
}
|
||||
markwonAdapter = MarkdownUtils.createTablesAdapter();
|
||||
LinearLayoutManagerBugFixed linearLayoutManager = new MarkwonLinearLayoutManager(activity,
|
||||
new SwipeLockScrollView.SwipeLockInterface() {
|
||||
SwipeLockLinearLayoutManager swipeLockLinearLayoutManager = new SwipeLockLinearLayoutManager(activity,
|
||||
new SwipeLockInterface() {
|
||||
@Override
|
||||
public void lockSwipe() {
|
||||
if (slidrInterface != null) {
|
||||
@ -156,7 +154,7 @@ public class RulesRecyclerViewAdapter extends RecyclerView.Adapter<RulesRecycler
|
||||
}
|
||||
}
|
||||
});
|
||||
descriptionMarkwonView.setLayoutManager(linearLayoutManager);
|
||||
descriptionMarkwonView.setLayoutManager(swipeLockLinearLayoutManager);
|
||||
descriptionMarkwonView.setAdapter(markwonAdapter);
|
||||
}
|
||||
}
|
||||
|
@ -1,26 +0,0 @@
|
||||
package ml.docilealligator.infinityforreddit.customviews;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
public class MarkwonLinearLayoutManager extends LinearLayoutManagerBugFixed {
|
||||
|
||||
@Nullable
|
||||
private final SwipeLockScrollView.SwipeLockInterface swipeLockInterface;
|
||||
|
||||
public MarkwonLinearLayoutManager(Context context,
|
||||
@Nullable SwipeLockScrollView.SwipeLockInterface swipeLockInterface) {
|
||||
super(context);
|
||||
this.swipeLockInterface = swipeLockInterface;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addView(View child) {
|
||||
super.addView(child);
|
||||
if (child instanceof SwipeLockScrollView) {
|
||||
((SwipeLockScrollView) child).setSwipeLockInterface(swipeLockInterface);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,76 @@
|
||||
package ml.docilealligator.infinityforreddit.customviews;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
public class SwipeLockFrameLayout extends FrameLayout implements SwipeLockView {
|
||||
@Nullable
|
||||
private SwipeLockInterface swipeLockInterface = null;
|
||||
private boolean locked = false;
|
||||
|
||||
public SwipeLockFrameLayout(@NonNull Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public SwipeLockFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public SwipeLockFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
public SwipeLockFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSwipeLockInterface(@Nullable SwipeLockInterface swipeLockInterface) {
|
||||
this.swipeLockInterface = swipeLockInterface;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
||||
updateSwipeLock(ev);
|
||||
return true;
|
||||
}
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility") // we are just listening to touch events
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent ev) {
|
||||
updateSwipeLock(ev);
|
||||
return super.onTouchEvent(ev);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unlocks swipe if the view cannot be scrolled right anymore or if {@code ev} is
|
||||
* {@link MotionEvent#ACTION_UP} or {@link MotionEvent#ACTION_CANCEL}
|
||||
*/
|
||||
private void updateSwipeLock(MotionEvent ev) {
|
||||
if (swipeLockInterface != null) {
|
||||
int action = ev.getAction();
|
||||
if (action == MotionEvent.ACTION_UP ||
|
||||
action == MotionEvent.ACTION_CANCEL) {
|
||||
// calling SlidrInterface#unlock aborts the swipe
|
||||
// so don't call unlock if it is already unlocked
|
||||
if (locked) {
|
||||
swipeLockInterface.unlockSwipe();
|
||||
locked = false;
|
||||
}
|
||||
} else {
|
||||
if (!locked) {
|
||||
swipeLockInterface.lockSwipe();
|
||||
locked = true;
|
||||
}
|
||||
}
|
||||
|
||||
swipeLockInterface.setSwipeLocked(locked);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package ml.docilealligator.infinityforreddit.customviews;
|
||||
|
||||
public interface SwipeLockInterface {
|
||||
void lockSwipe();
|
||||
void unlockSwipe();
|
||||
default void setSwipeLocked(boolean swipeLocked) {}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package ml.docilealligator.infinityforreddit.customviews;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
public class SwipeLockLinearLayoutManager extends LinearLayoutManagerBugFixed {
|
||||
|
||||
@Nullable
|
||||
private final SwipeLockInterface swipeLockInterface;
|
||||
|
||||
public SwipeLockLinearLayoutManager(Context context,
|
||||
@Nullable SwipeLockInterface swipeLockInterface) {
|
||||
super(context);
|
||||
this.swipeLockInterface = swipeLockInterface;
|
||||
}
|
||||
|
||||
public SwipeLockLinearLayoutManager(Context context, int orientation, boolean reverseLayout, @Nullable SwipeLockInterface swipeLockInterface) {
|
||||
super(context, orientation, reverseLayout);
|
||||
this.swipeLockInterface = swipeLockInterface;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addView(View child) {
|
||||
super.addView(child);
|
||||
if (child instanceof SwipeLockView) {
|
||||
((SwipeLockView) child).setSwipeLockInterface(swipeLockInterface);
|
||||
}
|
||||
}
|
||||
}
|
@ -12,7 +12,7 @@ import androidx.annotation.Nullable;
|
||||
* if it can be scrolled to the right. {@link SwipeLockInterface} must be set for
|
||||
* locking to work.
|
||||
*/
|
||||
public class SwipeLockScrollView extends HorizontalScrollView {
|
||||
public class SwipeLockScrollView extends HorizontalScrollView implements SwipeLockView {
|
||||
@Nullable
|
||||
private SwipeLockInterface swipeLockInterface = null;
|
||||
private boolean locked = false;
|
||||
@ -29,6 +29,7 @@ public class SwipeLockScrollView extends HorizontalScrollView {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSwipeLockInterface(@Nullable SwipeLockInterface swipeLockInterface) {
|
||||
this.swipeLockInterface = swipeLockInterface;
|
||||
}
|
||||
@ -54,8 +55,7 @@ public class SwipeLockScrollView extends HorizontalScrollView {
|
||||
if (swipeLockInterface != null) {
|
||||
int action = ev.getAction();
|
||||
if (action == MotionEvent.ACTION_UP ||
|
||||
action == MotionEvent.ACTION_CANCEL ||
|
||||
getScrollX() == 0) {
|
||||
action == MotionEvent.ACTION_CANCEL) {
|
||||
// calling SlidrInterface#unlock aborts the swipe
|
||||
// so don't call unlock if it is already unlocked
|
||||
if (locked) {
|
||||
@ -70,9 +70,4 @@ public class SwipeLockScrollView extends HorizontalScrollView {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public interface SwipeLockInterface {
|
||||
void lockSwipe();
|
||||
void unlockSwipe();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,7 @@
|
||||
package ml.docilealligator.infinityforreddit.customviews;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
public interface SwipeLockView {
|
||||
void setSwipeLockInterface(@Nullable SwipeLockInterface swipeLockInterface);
|
||||
}
|
@ -1057,6 +1057,11 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
if (!(viewHolder instanceof PostRecyclerViewAdapter.PostBaseViewHolder) &&
|
||||
!(viewHolder instanceof PostRecyclerViewAdapter.PostCompactBaseViewHolder)) {
|
||||
return makeMovementFlags(0, 0);
|
||||
} else if (viewHolder instanceof PostRecyclerViewAdapter.PostGalleryTypeViewHolder) {
|
||||
if (((PostRecyclerViewAdapter.PostGalleryTypeViewHolder) viewHolder).isSwipeLocked()) {
|
||||
return makeMovementFlags(0, 0);
|
||||
}
|
||||
|
||||
}
|
||||
int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
|
||||
return makeMovementFlags(0, swipeFlags);
|
||||
@ -1139,13 +1144,11 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
exceedThreshold = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getSwipeThreshold(@NonNull RecyclerView.ViewHolder viewHolder) {
|
||||
return 100;
|
||||
return 1;
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -3,7 +3,6 @@ package ml.docilealligator.infinityforreddit.settings;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.SeekBarPreference;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@ -31,7 +30,7 @@ public class CommentPreferenceFragment extends CustomFontPreferenceFragmentCompa
|
||||
if (showFewerToolbarOptionsThresholdSeekBarPreference != null) {
|
||||
showFewerToolbarOptionsThresholdSeekBarPreference.setSummary(getString(R.string.settings_show_fewer_toolbar_options_threshold_summary, sharedPreferences.getInt(SharedPreferencesUtils.SHOW_FEWER_TOOLBAR_OPTIONS_THRESHOLD, 5)));
|
||||
|
||||
showFewerToolbarOptionsThresholdSeekBarPreference.setOnPreferenceChangeListener((Preference.OnPreferenceChangeListener) (preference, newValue) -> {
|
||||
showFewerToolbarOptionsThresholdSeekBarPreference.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
showFewerToolbarOptionsThresholdSeekBarPreference.setSummary(
|
||||
getString(R.string.settings_show_fewer_toolbar_options_threshold_summary, (Integer) newValue));
|
||||
return true;
|
||||
|
30
app/src/main/res/layout/item_gallery_image_in_post_feed.xml
Normal file
30
app/src/main/res/layout/item_gallery_image_in_post_feed.xml
Normal file
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ml.docilealligator.infinityforreddit.customviews.SwipeLockFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ml.docilealligator.infinityforreddit.customviews.AspectRatioGifImageView
|
||||
android:id="@+id/image_view_item_gallery_image_in_post_feed"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:adjustViewBounds="true" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progress_bar_item_gallery_image_in_post_feed"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/error_text_view_item_gallery_image_in_post_feed"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_error_outline_black_24dp"
|
||||
android:layout_gravity="center"
|
||||
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" />
|
||||
|
||||
</ml.docilealligator.infinityforreddit.customviews.SwipeLockFrameLayout>
|
302
app/src/main/res/layout/item_post_gallery_type.xml
Normal file
302
app/src/main/res/layout/item_post_gallery_type.xml
Normal file
@ -0,0 +1,302 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.google.android.material.card.MaterialCardView 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"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
app:cardElevation="2dp"
|
||||
app:cardCornerRadius="16dp"
|
||||
style="?attr/materialCardViewElevatedStyle">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp">
|
||||
|
||||
<ml.docilealligator.infinityforreddit.customviews.AspectRatioGifImageView
|
||||
android:id="@+id/icon_gif_image_view_item_post_gallery_type"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_gravity="center"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/subreddit_name_text_view_item_post_gallery_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family"
|
||||
app:layout_constraintBottom_toTopOf="@id/user_text_view_item_post_gallery_type"
|
||||
app:layout_constraintStart_toEndOf="@id/icon_gif_image_view_item_post_gallery_type"
|
||||
app:layout_constraintEnd_toStartOf="@id/stickied_post_image_view_item_post_gallery_type"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintHorizontal_bias="0"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/user_text_view_item_post_gallery_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/icon_gif_image_view_item_post_gallery_type"
|
||||
app:layout_constraintEnd_toStartOf="@id/stickied_post_image_view_item_post_gallery_type"
|
||||
app:layout_constraintTop_toBottomOf="@+id/subreddit_name_text_view_item_post_gallery_type"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constrainedWidth="true" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/stickied_post_image_view_item_post_gallery_type"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/guideline2"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/post_time_text_view_item_post_gallery_type"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="end"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/guideline2"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/guideline2"
|
||||
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_gallery_type"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:textSize="?attr/title_font_18"
|
||||
android:fontFamily="?attr/title_font_family" />
|
||||
|
||||
<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_gallery_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="4dp"
|
||||
android:text="@string/gallery"
|
||||
android:textSize="?attr/font_12"
|
||||
android:fontFamily="?attr/font_family"
|
||||
app:lib_setRadius="6dp"
|
||||
app:lib_setRoundedView="true"
|
||||
app:lib_setShape="rectangle" />
|
||||
|
||||
<com.libRG.CustomTextView
|
||||
android:id="@+id/spoiler_text_view_item_post_gallery_type"
|
||||
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="6dp"
|
||||
app:lib_setRoundedView="true"
|
||||
app:lib_setShape="rectangle" />
|
||||
|
||||
<com.libRG.CustomTextView
|
||||
android:id="@+id/nsfw_text_view_item_post_gallery_type"
|
||||
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="6dp"
|
||||
app:lib_setRoundedView="true"
|
||||
app:lib_setShape="rectangle" />
|
||||
|
||||
<com.libRG.CustomTextView
|
||||
android:id="@+id/flair_text_view_item_post_gallery_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:textSize="?attr/font_12"
|
||||
android:fontFamily="?attr/font_family"
|
||||
android:padding="4dp"
|
||||
android:visibility="gone"
|
||||
app:lib_setRadius="6dp"
|
||||
app:lib_setRoundedView="true"
|
||||
app:lib_setShape="rectangle" />
|
||||
|
||||
<com.libRG.CustomTextView
|
||||
android:id="@+id/awards_text_view_item_post_gallery_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="4dp"
|
||||
android:textSize="?attr/font_12"
|
||||
android:fontFamily="?attr/font_family"
|
||||
android:visibility="gone"
|
||||
app:lib_setRadius="6dp"
|
||||
app:lib_setRoundedView="true"
|
||||
app:lib_setShape="rectangle" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/archived_image_view_item_post_gallery_type"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_archive_outline"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/locked_image_view_item_post_gallery_type"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_outline_lock_24dp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/crosspost_image_view_item_post_gallery_type"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/crosspost"
|
||||
android:visibility="gone" />
|
||||
|
||||
</com.nex3z.flowlayout.FlowLayout>
|
||||
|
||||
<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" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/no_preview_image_view_item_post_gallery_type"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="150dp"
|
||||
android:src="@drawable/ic_gallery_24dp"
|
||||
android:scaleType="center"
|
||||
android:visibility="gone" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/bottom_constraint_layout_item_post_gallery_type"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/upvote_button_item_post_gallery_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="12dp"
|
||||
android:src="@drawable/ic_arrow_upward_grey_24dp"
|
||||
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_gallery_type"
|
||||
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/upvote_button_item_post_gallery_type" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/downvote_button_item_post_gallery_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="12dp"
|
||||
android:src="@drawable/ic_arrow_downward_grey_24dp"
|
||||
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_gallery_type" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/comments_count_text_view_item_post_gallery_type"
|
||||
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/downvote_button_item_post_gallery_type" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/save_button_item_post_gallery_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="12dp"
|
||||
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_text_view_item_post_gallery_type"
|
||||
app:layout_constraintEnd_toStartOf="@id/share_button_item_post_gallery_type" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/share_button_item_post_gallery_type"
|
||||
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>
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
Loading…
Reference in New Issue
Block a user