Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +80 −69 Original line number Diff line number Diff line Loading @@ -1631,11 +1631,12 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.card.setVisibility(View.GONE); } if (measuredWidth <= 0 && statusToDeal.media_attachments != null && statusToDeal.media_attachments.size() > 0) { boolean finalFullAttachement = fullAttachement; holder.binding.mediaContainer.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { holder.binding.mediaContainer.getViewTreeObserver().removeOnGlobalLayoutListener(this); if (fullAttachement) { if (finalFullAttachement) { measuredWidth = holder.binding.mediaContainer.getWidth(); } else { measuredWidth = holder.binding.media.mediaContainer.getWidth(); Loading Loading @@ -1696,6 +1697,43 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.media.mediaContainer.setVisibility(View.VISIBLE); int mediaPosition = 1; boolean autoplaygif = sharedpreferences.getBoolean(context.getString(R.string.SET_AUTO_PLAY_GIG_MEDIA), false); for (Attachment attachment : statusToDeal.media_attachments) { float ratio = 1.0f; float mediaH = -1.0f; float mediaW = -1.0f; if (attachment.meta != null && attachment.meta.getSmall() != null) { mediaH = attachment.meta.getSmall().height; mediaW = attachment.meta.getSmall().width; if (mediaW != 0) { ratio = measuredWidth > 0 ? measuredWidth / mediaW : 1.0f; } } if(ratio >= 5) { fullAttachement = false; } LayoutMediaBinding layoutMediaBinding = LayoutMediaBinding.inflate(LayoutInflater.from(context)); if ((fullAttachement && (!statusToDeal.sensitive || expand_media))) { holder.binding.mediaContainer.addView(layoutMediaBinding.getRoot()); } else { if (mediaPosition == 1) { holder.binding.media.media1Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 2 && statusToDeal.media_attachments.size() == 3) { if (statusToDeal.media_attachments.get(0).meta != null && statusToDeal.media_attachments.get(0).meta.getSmall() != null && statusToDeal.media_attachments.get(0).meta.getSmall().width < statusToDeal.media_attachments.get(0).meta.getSmall().height) { holder.binding.media.media2Container.addView(layoutMediaBinding.getRoot()); } else { holder.binding.media.media3Container.addView(layoutMediaBinding.getRoot()); } } else if (mediaPosition == 2) { holder.binding.media.media2Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 3 && statusToDeal.media_attachments.size() == 3) { holder.binding.media.media4Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 3) { holder.binding.media.media3Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 4) { holder.binding.media.media4Container.addView(layoutMediaBinding.getRoot()); } } if (!fullAttachement || statusToDeal.sensitive) { int defaultHeight = (int) Helper.convertDpToPixel(300, context); int orientation = context.getResources().getConfiguration().orientation; Loading Loading @@ -1752,42 +1790,9 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.media.moreMedia.setText(context.getString(R.string.more_media, "+" + (statusToDeal.media_attachments.size() - 4))); } } for (Attachment attachment : statusToDeal.media_attachments) { LayoutMediaBinding layoutMediaBinding = LayoutMediaBinding.inflate(LayoutInflater.from(context)); if ((fullAttachement && (!statusToDeal.sensitive || expand_media))) { holder.binding.mediaContainer.addView(layoutMediaBinding.getRoot()); } else { if (mediaPosition == 1) { holder.binding.media.media1Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 2 && statusToDeal.media_attachments.size() == 3) { if (statusToDeal.media_attachments.get(0).meta != null && statusToDeal.media_attachments.get(0).meta.getSmall() != null && statusToDeal.media_attachments.get(0).meta.getSmall().width < statusToDeal.media_attachments.get(0).meta.getSmall().height) { holder.binding.media.media2Container.addView(layoutMediaBinding.getRoot()); } else { holder.binding.media.media3Container.addView(layoutMediaBinding.getRoot()); } } else if (mediaPosition == 2) { holder.binding.media.media2Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 3 && statusToDeal.media_attachments.size() == 3) { holder.binding.media.media4Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 3) { holder.binding.media.media3Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 4) { holder.binding.media.media4Container.addView(layoutMediaBinding.getRoot()); } } if (fullAttachement && (!statusToDeal.sensitive || expand_media)) { float ratio = 1.0f; float mediaH = -1.0f; float mediaW = -1.0f; if (attachment.meta != null && attachment.meta.getSmall() != null) { mediaH = attachment.meta.getSmall().height; mediaW = attachment.meta.getSmall().width; if (mediaW != 0) { ratio = measuredWidth > 0 ? measuredWidth / mediaW : 1.0f; } } if (autoplaygif && attachment.type.equalsIgnoreCase("gifv") && mediaPosition == 1) { layoutMediaBinding.media.setVisibility(View.GONE); Loading Loading @@ -2883,6 +2888,10 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> if (isArt) { fullAttachement = true; } float ratio = measuredWidth > 0 ? measuredWidth / mediaW : 1.0f; if(ratio >= 5) { fullAttachement = false; } boolean expand_media = sharedpreferences.getBoolean(context.getString(R.string.SET_EXPAND_MEDIA), false); RequestBuilder<Drawable> requestBuilder; GlideRequests glideRequests = GlideApp.with(context); Loading Loading @@ -2924,12 +2933,14 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> Status statusToDeal, Attachment attachment) { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); final int timeout = sharedpreferences.getInt(context.getString(R.string.SET_NSFW_TIMEOUT), 5); boolean fullAttachement = sharedpreferences.getBoolean(context.getString(R.string.SET_FULL_PREVIEW), false); boolean long_press_media = sharedpreferences.getBoolean(context.getString(R.string.SET_LONG_PRESS_STORE_MEDIA), false); boolean expand_media = sharedpreferences.getBoolean(context.getString(R.string.SET_EXPAND_MEDIA), false); LinearLayout.LayoutParams lp; boolean fullAttachement = sharedpreferences.getBoolean(context.getString(R.string.SET_FULL_PREVIEW), false); if(ratio >= 5) { fullAttachement = false; } if (fullAttachement && mediaH > 0 && (!statusToDeal.sensitive || expand_media)) { lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) (mediaH * ratio)); layoutMediaBinding.media.setScaleType(ImageView.ScaleType.FIT_CENTER); Loading Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +80 −69 Original line number Diff line number Diff line Loading @@ -1631,11 +1631,12 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.card.setVisibility(View.GONE); } if (measuredWidth <= 0 && statusToDeal.media_attachments != null && statusToDeal.media_attachments.size() > 0) { boolean finalFullAttachement = fullAttachement; holder.binding.mediaContainer.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { holder.binding.mediaContainer.getViewTreeObserver().removeOnGlobalLayoutListener(this); if (fullAttachement) { if (finalFullAttachement) { measuredWidth = holder.binding.mediaContainer.getWidth(); } else { measuredWidth = holder.binding.media.mediaContainer.getWidth(); Loading Loading @@ -1696,6 +1697,43 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.media.mediaContainer.setVisibility(View.VISIBLE); int mediaPosition = 1; boolean autoplaygif = sharedpreferences.getBoolean(context.getString(R.string.SET_AUTO_PLAY_GIG_MEDIA), false); for (Attachment attachment : statusToDeal.media_attachments) { float ratio = 1.0f; float mediaH = -1.0f; float mediaW = -1.0f; if (attachment.meta != null && attachment.meta.getSmall() != null) { mediaH = attachment.meta.getSmall().height; mediaW = attachment.meta.getSmall().width; if (mediaW != 0) { ratio = measuredWidth > 0 ? measuredWidth / mediaW : 1.0f; } } if(ratio >= 5) { fullAttachement = false; } LayoutMediaBinding layoutMediaBinding = LayoutMediaBinding.inflate(LayoutInflater.from(context)); if ((fullAttachement && (!statusToDeal.sensitive || expand_media))) { holder.binding.mediaContainer.addView(layoutMediaBinding.getRoot()); } else { if (mediaPosition == 1) { holder.binding.media.media1Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 2 && statusToDeal.media_attachments.size() == 3) { if (statusToDeal.media_attachments.get(0).meta != null && statusToDeal.media_attachments.get(0).meta.getSmall() != null && statusToDeal.media_attachments.get(0).meta.getSmall().width < statusToDeal.media_attachments.get(0).meta.getSmall().height) { holder.binding.media.media2Container.addView(layoutMediaBinding.getRoot()); } else { holder.binding.media.media3Container.addView(layoutMediaBinding.getRoot()); } } else if (mediaPosition == 2) { holder.binding.media.media2Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 3 && statusToDeal.media_attachments.size() == 3) { holder.binding.media.media4Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 3) { holder.binding.media.media3Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 4) { holder.binding.media.media4Container.addView(layoutMediaBinding.getRoot()); } } if (!fullAttachement || statusToDeal.sensitive) { int defaultHeight = (int) Helper.convertDpToPixel(300, context); int orientation = context.getResources().getConfiguration().orientation; Loading Loading @@ -1752,42 +1790,9 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.media.moreMedia.setText(context.getString(R.string.more_media, "+" + (statusToDeal.media_attachments.size() - 4))); } } for (Attachment attachment : statusToDeal.media_attachments) { LayoutMediaBinding layoutMediaBinding = LayoutMediaBinding.inflate(LayoutInflater.from(context)); if ((fullAttachement && (!statusToDeal.sensitive || expand_media))) { holder.binding.mediaContainer.addView(layoutMediaBinding.getRoot()); } else { if (mediaPosition == 1) { holder.binding.media.media1Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 2 && statusToDeal.media_attachments.size() == 3) { if (statusToDeal.media_attachments.get(0).meta != null && statusToDeal.media_attachments.get(0).meta.getSmall() != null && statusToDeal.media_attachments.get(0).meta.getSmall().width < statusToDeal.media_attachments.get(0).meta.getSmall().height) { holder.binding.media.media2Container.addView(layoutMediaBinding.getRoot()); } else { holder.binding.media.media3Container.addView(layoutMediaBinding.getRoot()); } } else if (mediaPosition == 2) { holder.binding.media.media2Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 3 && statusToDeal.media_attachments.size() == 3) { holder.binding.media.media4Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 3) { holder.binding.media.media3Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 4) { holder.binding.media.media4Container.addView(layoutMediaBinding.getRoot()); } } if (fullAttachement && (!statusToDeal.sensitive || expand_media)) { float ratio = 1.0f; float mediaH = -1.0f; float mediaW = -1.0f; if (attachment.meta != null && attachment.meta.getSmall() != null) { mediaH = attachment.meta.getSmall().height; mediaW = attachment.meta.getSmall().width; if (mediaW != 0) { ratio = measuredWidth > 0 ? measuredWidth / mediaW : 1.0f; } } if (autoplaygif && attachment.type.equalsIgnoreCase("gifv") && mediaPosition == 1) { layoutMediaBinding.media.setVisibility(View.GONE); Loading Loading @@ -2883,6 +2888,10 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> if (isArt) { fullAttachement = true; } float ratio = measuredWidth > 0 ? measuredWidth / mediaW : 1.0f; if(ratio >= 5) { fullAttachement = false; } boolean expand_media = sharedpreferences.getBoolean(context.getString(R.string.SET_EXPAND_MEDIA), false); RequestBuilder<Drawable> requestBuilder; GlideRequests glideRequests = GlideApp.with(context); Loading Loading @@ -2924,12 +2933,14 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> Status statusToDeal, Attachment attachment) { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); final int timeout = sharedpreferences.getInt(context.getString(R.string.SET_NSFW_TIMEOUT), 5); boolean fullAttachement = sharedpreferences.getBoolean(context.getString(R.string.SET_FULL_PREVIEW), false); boolean long_press_media = sharedpreferences.getBoolean(context.getString(R.string.SET_LONG_PRESS_STORE_MEDIA), false); boolean expand_media = sharedpreferences.getBoolean(context.getString(R.string.SET_EXPAND_MEDIA), false); LinearLayout.LayoutParams lp; boolean fullAttachement = sharedpreferences.getBoolean(context.getString(R.string.SET_FULL_PREVIEW), false); if(ratio >= 5) { fullAttachement = false; } if (fullAttachement && mediaH > 0 && (!statusToDeal.sensitive || expand_media)) { lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) (mediaH * ratio)); layoutMediaBinding.media.setScaleType(ImageView.ScaleType.FIT_CENTER); Loading