use smaller image previews on narrow screens

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java |  4 
src/main/res/values-w384dp/dimens.xml                               | 15 
src/main/res/values/dimens.xml                                      |  1 
3 files changed, 11 insertions(+), 9 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java 🔗

@@ -555,7 +555,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
         viewHolder.audioPlayer.setVisibility(View.GONE);
         viewHolder.image.setVisibility(View.VISIBLE);
         final FileParams params = message.getFileParams();
-        final double target = metrics.density * 288;
+        final float target = activity.getResources().getDimension(R.dimen.image_preview_width);
         final int scaledW;
         final int scaledH;
         if (Math.max(params.height, params.width) * metrics.density <= target) {
@@ -571,7 +571,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
             scaledW = (int) target;
             scaledH = (int) (params.height / ((double) params.width / target));
         }
-        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(scaledW, scaledH);
+        final LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(scaledW, scaledH);
         layoutParams.setMargins(0, (int) (metrics.density * 4), 0, (int) (metrics.density * 4));
         viewHolder.image.setLayoutParams(layoutParams);
         activity.loadBitmap(message, viewHolder.image);

src/main/res/values-w384dp/dimens.xml 🔗

@@ -1,9 +1,10 @@
 <resources>
-	<!-- 384dp is the screen width of the Nexus 4. Something like a Moto G is smaller but a Nexus 5X is larger -->
-	<!-- https://material.io/devices/ -->
-	<dimen name="fineprint_size">12sp</dimen>
-	<dimen name="audio_player_width">288dp</dimen>
-	<dimen name="avatar_on_details_screen_size">72dp</dimen>
-	<dimen name="media_size">64dp</dimen> <!-- ideally not larger than avatar_on_details_screen -->
-	<dimen name="sd_label_max_width">288dp</dimen>
+    <!-- 384dp is the screen width of the Nexus 4. Something like a Moto G is smaller but a Nexus 5X is larger -->
+    <!-- https://material.io/devices/ -->
+    <dimen name="fineprint_size">12sp</dimen>
+    <dimen name="audio_player_width">288dp</dimen>
+    <dimen name="image_preview_width">288dp</dimen>
+    <dimen name="avatar_on_details_screen_size">72dp</dimen>
+    <dimen name="media_size">64dp</dimen> <!-- ideally not larger than avatar_on_details_screen -->
+    <dimen name="sd_label_max_width">288dp</dimen>
 </resources>

src/main/res/values/dimens.xml 🔗

@@ -10,6 +10,7 @@
     </dimen>  <!-- icon width (24dp) + 2 * image button padding -->
     <dimen name="fineprint_size">11sp</dimen>
     <dimen name="audio_player_width">224dp</dimen>
+    <dimen name="image_preview_width">224dp</dimen>
     <dimen name="avatar_item_distance">16dp</dimen>
 
     <dimen name="media_preview_size">80dp</dimen>