diff --git a/WallpaperPicker/src/com/android/launcher3/CropView.java b/WallpaperPicker/src/com/android/launcher3/CropView.java index 0ead365b22..4770a7177c 100644 --- a/WallpaperPicker/src/com/android/launcher3/CropView.java +++ b/WallpaperPicker/src/com/android/launcher3/CropView.java @@ -193,10 +193,10 @@ public class CropView extends TiledImageView implements OnScaleGestureListener { * Offsets wallpaper preview according to the state it will be displayed in upon returning home. * @param offset Ranges from 0 to 1, where 0 is the leftmost parallax and 1 is the rightmost. */ - public void setParallaxOffset(float offset) { + public void setParallaxOffset(float offset, RectF crop) { offset = Math.max(0, Math.min(offset, 1)); // Make sure the offset is in the correct range. float screenWidth = getWidth() / mRenderer.scale; - mCenterX = screenWidth / 2 + offset * (getSourceDimensions().x - screenWidth); + mCenterX = screenWidth / 2 + offset * (crop.width() - screenWidth) + crop.left; updateCenter(); } diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java index 871eef20cb..efa1181ae4 100644 --- a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java +++ b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java @@ -250,8 +250,13 @@ public class WallpaperCropActivity extends BaseActivity implements Handler.Callb mCropView.moveToLeft(); } if (req.scaleAndOffsetProvider != null) { - mCropView.setScale(req.scaleAndOffsetProvider.getScale(req.result)); - mCropView.setParallaxOffset(req.scaleAndOffsetProvider.getParallaxOffset()); + TileSource src = req.result; + Point wallpaperSize = WallpaperUtils.getDefaultWallpaperSize( + getResources(), getWindowManager()); + RectF crop = Utils.getMaxCropRect(src.getImageWidth(), src.getImageHeight(), + wallpaperSize.x, wallpaperSize.y, false /* leftAligned */); + mCropView.setScale(req.scaleAndOffsetProvider.getScale(wallpaperSize, crop)); + mCropView.setParallaxOffset(req.scaleAndOffsetProvider.getParallaxOffset(), crop); } // Free last image @@ -443,7 +448,7 @@ public class WallpaperCropActivity extends BaseActivity implements Handler.Callb } public interface CropViewScaleAndOffsetProvider { - float getScale(TileSource src); + float getScale(Point wallpaperSize, RectF crop); float getParallaxOffset(); } } diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/DefaultWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/DefaultWallpaperInfo.java index 2b508f1e50..7ede260964 100644 --- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/DefaultWallpaperInfo.java +++ b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/DefaultWallpaperInfo.java @@ -9,6 +9,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Point; +import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; @@ -19,7 +20,6 @@ import com.android.launcher3.LauncherFiles; import com.android.launcher3.Utilities; import com.android.launcher3.WallpaperCropActivity.CropViewScaleAndOffsetProvider; import com.android.launcher3.WallpaperPickerActivity; -import com.android.photos.views.TiledImageRenderer.TileSource; import java.io.File; import java.io.FileOutputStream; @@ -38,7 +38,7 @@ public class DefaultWallpaperInfo extends DrawableThumbWallpaperInfo { a.setCropViewTileSource(null, false, false, new CropViewScaleAndOffsetProvider() { @Override - public float getScale(TileSource src) { + public float getScale(Point wallpaperSize, RectF crop) { return 1f; } diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java index 9180c46371..a5becf1e74 100644 --- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java +++ b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java @@ -4,13 +4,11 @@ import android.content.res.Resources; import android.graphics.Point; import android.graphics.RectF; import android.graphics.drawable.Drawable; -import com.android.gallery3d.common.Utils; + import com.android.launcher3.WallpaperCropActivity.CropViewScaleAndOffsetProvider; import com.android.launcher3.WallpaperPickerActivity; -import com.android.launcher3.util.WallpaperUtils; import com.android.photos.BitmapRegionTileSource; import com.android.photos.BitmapRegionTileSource.BitmapSource; -import com.android.photos.views.TiledImageRenderer.TileSource; public class ResourceWallpaperInfo extends DrawableThumbWallpaperInfo { @@ -28,16 +26,11 @@ public class ResourceWallpaperInfo extends DrawableThumbWallpaperInfo { a.setWallpaperButtonEnabled(false); final BitmapRegionTileSource.ResourceBitmapSource bitmapSource = new BitmapRegionTileSource.ResourceBitmapSource(mResources, mResId, a); - a.setCropViewTileSource(bitmapSource, false, true, new CropViewScaleAndOffsetProvider() { + a.setCropViewTileSource(bitmapSource, false, false, new CropViewScaleAndOffsetProvider() { @Override - public float getScale(TileSource src) { - Point wallpaperSize = WallpaperUtils.getDefaultWallpaperSize( - a.getResources(), a.getWindowManager()); - RectF crop = Utils.getMaxCropRect( - src.getImageWidth(), src.getImageHeight(), - wallpaperSize.x, wallpaperSize.y, false); - return wallpaperSize.x / crop.width(); + public float getScale(Point wallpaperSize, RectF crop) { + return wallpaperSize.x /crop.width(); } @Override