Fix getting an empty thumbnail in reviewing panorama.
The sample size for generating a thumbnail should be calculated in a way
that also considers the case of a portrait image, i.e., height > width.
The SharePopup should also puts the thumbnail of a portrait panorama in
the center of the thumbnail view.
Bug: 5411488
Change-Id: I5e86a91829de77f4694c039bd871e6831f3906cb
diff --git a/src/com/android/camera/panorama/PanoramaActivity.java b/src/com/android/camera/panorama/PanoramaActivity.java
index 25c565f..48a455e 100755
--- a/src/com/android/camera/panorama/PanoramaActivity.java
+++ b/src/com/android/camera/panorama/PanoramaActivity.java
@@ -776,11 +776,14 @@
int orientation = Exif.getOrientation(jpeg.data);
Uri uri = savePanorama(jpeg.data, jpeg.width, jpeg.height, orientation);
if (uri != null) {
- // Create a thumbnail whose width is equal or bigger
- // than the entire screen.
- int ratio = (int) Math.ceil((double) jpeg.width /
- mPanoLayout.getWidth());
- int inSampleSize = Integer.highestOneBit(ratio);
+ // Create a thumbnail whose width or height is equal or bigger
+ // than the screen's width or height.
+ int widthRatio = (int) Math.ceil((double) jpeg.width
+ / mPanoLayout.getWidth());
+ int heightRatio = (int) Math.ceil((double) jpeg.height
+ / mPanoLayout.getHeight());
+ int inSampleSize = Integer.highestOneBit(
+ Math.max(widthRatio, heightRatio));
mThumbnail = Thumbnail.createThumbnail(
jpeg.data, orientation, inSampleSize, uri);
}
diff --git a/src/com/android/camera/ui/SharePopup.java b/src/com/android/camera/ui/SharePopup.java
index 84bada4..3917c54 100644
--- a/src/com/android/camera/ui/SharePopup.java
+++ b/src/com/android/camera/ui/SharePopup.java
@@ -198,10 +198,9 @@
new RelativeLayout.LayoutParams(lpOld.width, lpOld.height);
mRootView.setBackgroundDrawable(null);
- if (mBitmapWidth > mBitmapHeight*2) {
+ if (mBitmapWidth > mBitmapHeight * 2 || mBitmapHeight > mBitmapWidth * 2) {
// panorama image
- lpNew.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
- lpNew.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
+ lpNew.addRule(RelativeLayout.CENTER_HORIZONTAL);
lpNew.addRule(RelativeLayout.CENTER_VERTICAL);
// panorama images block the preview from showing in the background