made image preview size smaller for low res images

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java | 22 
1 file changed, 14 insertions(+), 8 deletions(-)

Detailed changes

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

@@ -448,16 +448,22 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 		viewHolder.image.setVisibility(View.VISIBLE);
 		FileParams params = message.getFileParams();
 		double target = metrics.density * 288;
-		int scalledW;
-		int scalledH;
-		if (params.width <= params.height) {
-			scalledW = (int) (params.width / ((double) params.height / target));
-			scalledH = (int) target;
+		int scaledW;
+		int scaledH;
+		if (Math.max(params.height, params.width) * metrics.density <= target) {
+			scaledW = (int) (params.width * metrics.density);
+			scaledH = (int) (params.height * metrics.density);
+		} else if (Math.max(params.height,params.width) <= target) {
+			scaledW = params.width;
+			scaledH = params.height;
+		} else if (params.width <= params.height) {
+			scaledW = (int) (params.width / ((double) params.height / target));
+			scaledH = (int) target;
 		} else {
-			scalledW = (int) target;
-			scalledH = (int) (params.height / ((double) params.width / target));
+			scaledW = (int) target;
+			scaledH = (int) (params.height / ((double) params.width / target));
 		}
-		LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(scalledW, scalledH);
+		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);