From 3ea0bfbcbea64276595029878d37f25bf4fbb881 Mon Sep 17 00:00:00 2001 From: Bobby Georgescu Date: Thu, 4 Oct 2012 14:04:13 -0700 Subject: Set the thumbnail/screennail sizes based on screensize Bug: 7232758 Prior to this CL, the thumbnail and screennail sizes were hardcoded which resulted in mediocre image quality when using the Gallery in general and the camera filmstrip. Now, we set the size of these items based on the resolution of the display. Because high-resolution devices tend to have higher-performance graphics to drive their large displays, we expect that this will not introduce any significant performance impact. Change-Id: I90e08f7aca670e275c913fd9e21e4459c8bf9fcf --- src/com/android/gallery3d/util/GalleryUtils.java | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'src/com/android/gallery3d/util') diff --git a/src/com/android/gallery3d/util/GalleryUtils.java b/src/com/android/gallery3d/util/GalleryUtils.java index efa06149f..05bd3dea6 100644 --- a/src/com/android/gallery3d/util/GalleryUtils.java +++ b/src/com/android/gallery3d/util/GalleryUtils.java @@ -75,16 +75,25 @@ public class GalleryUtils { private static boolean sCameraAvailable; public static void initialize(Context context) { - if (sPixelDensity < 0) { - DisplayMetrics metrics = new DisplayMetrics(); - WindowManager wm = (WindowManager) - context.getSystemService(Context.WINDOW_SERVICE); - wm.getDefaultDisplay().getMetrics(metrics); - sPixelDensity = metrics.density; - } + DisplayMetrics metrics = new DisplayMetrics(); + WindowManager wm = (WindowManager) + context.getSystemService(Context.WINDOW_SERVICE); + wm.getDefaultDisplay().getMetrics(metrics); + sPixelDensity = metrics.density; Resources r = context.getResources(); BitmapScreenNail.setPlaceholderColor(r.getColor( R.color.bitmap_screennail_placeholder)); + initializeThumbnailSizes(metrics, r); + } + + private static void initializeThumbnailSizes(DisplayMetrics metrics, Resources r) { + int minRows = Math.min(r.getInteger(R.integer.album_rows_land), + r.getInteger(R.integer.albumset_rows_land)); + int maxDimensionPixels = Math.max(metrics.heightPixels, metrics.widthPixels); + // Never need to completely fill the screen + maxDimensionPixels = maxDimensionPixels * 3/4; + MediaItem.setThumbnailSizes(maxDimensionPixels, maxDimensionPixels / minRows); + BitmapScreenNail.setMaxSide(maxDimensionPixels); } public static boolean isHighResolution(Context context) { -- cgit v1.2.3