diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java
index 6b2c6d439..d6cb93a92 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java
@@ -411,14 +411,15 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
return ImageLoadingHelper.decodeBlurHash(this.avatar.getContext(), blurhash);
}
- private void loadImage(MediaPreviewImageView imageView,
+ private void loadImage(View wrapper,
+ MediaPreviewImageView imageView,
@Nullable String previewUrl,
@Nullable MetaData meta,
@Nullable String blurhash) {
Drawable placeholder = blurhash != null ? decodeBlurHash(blurhash) : mediaPreviewUnloaded;
- ViewKt.doOnLayout(imageView, view -> {
+ ViewKt.doOnLayout(wrapper, view -> {
if (TextUtils.isEmpty(previewUrl)) {
imageView.removeFocalPoint();
@@ -433,7 +434,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
if (focus != null) { // If there is a focal point for this attachment:
imageView.setFocalPoint(focus);
- Glide.with(imageView)
+ Glide.with(imageView.getContext())
.load(previewUrl)
.placeholder(placeholder)
.centerInside()
@@ -460,19 +461,21 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
mediaPreview.setVisibility(View.VISIBLE);
mediaPreview.setAspectRatios(AttachmentHelper.aspectRatios(attachments));
- mediaPreview.forEachIndexed((i, imageView) -> {
+ mediaPreview.forEachIndexed((i, wrapper, imageView, descriptionIndicator) -> {
Attachment attachment = attachments.get(i);
String previewUrl = attachment.getPreviewUrl();
String description = attachment.getDescription();
+ boolean hasDescription = !TextUtils.isEmpty(description);
- if (TextUtils.isEmpty(description)) {
- imageView.setContentDescription(imageView.getContext()
- .getString(R.string.action_view_media));
- } else {
+ if (hasDescription) {
imageView.setContentDescription(description);
+ } else {
+ imageView.setContentDescription(imageView.getContext().getString(R.string.action_view_media));
}
+ descriptionIndicator.setVisibility(hasDescription ? View.VISIBLE : View.GONE);
loadImage(
+ wrapper,
imageView,
showingContent ? previewUrl : null,
attachment.getMeta(),
@@ -502,6 +505,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
}
v.setVisibility(View.GONE);
sensitiveMediaWarning.setVisibility(View.VISIBLE);
+ descriptionIndicator.setVisibility(View.GONE);
});
sensitiveMediaWarning.setOnClickListener(v -> {
if (getBindingAdapterPosition() != RecyclerView.NO_POSITION) {
@@ -509,6 +513,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
}
v.setVisibility(View.GONE);
sensitiveMediaShow.setVisibility(View.VISIBLE);
+ descriptionIndicator.setVisibility(hasDescription ? View.VISIBLE : View.GONE);
});
return null;
diff --git a/app/src/main/java/com/keylesspalace/tusky/view/MediaPreviewLayout.kt b/app/src/main/java/com/keylesspalace/tusky/view/MediaPreviewLayout.kt
index af5c93302..9680345f8 100644
--- a/app/src/main/java/com/keylesspalace/tusky/view/MediaPreviewLayout.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/view/MediaPreviewLayout.kt
@@ -2,9 +2,11 @@ package com.keylesspalace.tusky.view
import android.content.Context
import android.util.AttributeSet
+import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
+import android.widget.TextView
import com.keylesspalace.tusky.R
import kotlin.math.roundToInt
@@ -26,7 +28,9 @@ class MediaPreviewLayout(context: Context, attrs: AttributeSet? = null) :
attachImageViews()
}
- private val imageViewCache = Array(4) { MediaPreviewImageView(context) }
+ private val imageViewCache = Array(4) {
+ LayoutInflater.from(context).inflate(R.layout.item_image_preview_overlay, this, false)
+ }
private var measuredOrientation = LinearLayout.VERTICAL
@@ -180,9 +184,15 @@ class MediaPreviewLayout(context: Context, attrs: AttributeSet? = null) :
}
}
- inline fun forEachIndexed(action: (Int, MediaPreviewImageView) -> Unit) {
+ inline fun forEachIndexed(action: (Int, View, MediaPreviewImageView, TextView) -> Unit) {
for (index in 0 until childCount) {
- action(index, getChildAt(index) as MediaPreviewImageView)
+ val wrapper = getChildAt(index)
+ action(
+ index,
+ wrapper,
+ wrapper.findViewById(R.id.preview_image_view) as MediaPreviewImageView,
+ wrapper.findViewById(R.id.preview_media_description_indicator) as TextView
+ )
}
}
}
diff --git a/app/src/main/res/drawable/media_warning_bg.xml b/app/src/main/res/drawable/media_warning_bg.xml
index 93ff4e076..c1628a627 100644
--- a/app/src/main/res/drawable/media_warning_bg.xml
+++ b/app/src/main/res/drawable/media_warning_bg.xml
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_image_preview_overlay.xml b/app/src/main/res/layout/item_image_preview_overlay.xml
new file mode 100644
index 000000000..88cbc2a82
--- /dev/null
+++ b/app/src/main/res/layout/item_image_preview_overlay.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/item_media_preview.xml b/app/src/main/res/layout/item_media_preview.xml
index 34a0376ce..1fec78f68 100644
--- a/app/src/main/res/layout/item_media_preview.xml
+++ b/app/src/main/res/layout/item_media_preview.xml
@@ -20,7 +20,7 @@
android:contentDescription="@null"
android:padding="@dimen/status_sensitive_media_button_padding"
android:visibility="gone"
- app:layout_constraintLeft_toLeftOf="@+id/status_media_preview_container"
+ app:layout_constraintStart_toStartOf="@+id/status_media_preview_container"
app:layout_constraintTop_toTopOf="@+id/status_media_preview_container"
app:srcCompat="@drawable/ic_eye_24dp"
app:tint="@color/white" />
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index ca08b47f3..bfe543c3e 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -40,6 +40,7 @@
%s teilte
Heikle Inhalte
Medien versteckt
+ ALT
Zum Anzeigen tippen
Zeige mehr
Zeige weniger
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f0794e4d5..6fcc16b06 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -60,6 +60,7 @@
%s boosted
Sensitive content
Media hidden
+ ALT
Click to view
Show More
Show Less