summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Jurka <mikejurka@google.com>2013-08-22 22:12:23 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-08-22 22:12:25 +0000
commit0cffae54f9b501144735cfc046c90da824840c08 (patch)
tree6946e10ed902b08be0772bbac6cd375acd24eb24 /src
parent61c69869b3947f1d242b07384bb4e9cd5b266915 (diff)
parentfbf25c19aa50f4bc2d3479b7ffb08609f2974e9e (diff)
downloadandroid_packages_apps_Trebuchet-0cffae54f9b501144735cfc046c90da824840c08.tar.gz
android_packages_apps_Trebuchet-0cffae54f9b501144735cfc046c90da824840c08.tar.bz2
android_packages_apps_Trebuchet-0cffae54f9b501144735cfc046c90da824840c08.zip
Merge "Disable zoom/pan for built-in wallpapers" into jb-ub-gel-agar
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/CropView.java83
-rw-r--r--src/com/android/launcher3/WallpaperPickerActivity.java3
2 files changed, 59 insertions, 27 deletions
diff --git a/src/com/android/launcher3/CropView.java b/src/com/android/launcher3/CropView.java
index 5b4928298..f9046432e 100644
--- a/src/com/android/launcher3/CropView.java
+++ b/src/com/android/launcher3/CropView.java
@@ -17,12 +17,13 @@
package com.android.launcher3;
import android.content.Context;
-import android.graphics.Bitmap;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.ScaleGestureDetector.OnScaleGestureListener;
+import android.view.ViewTreeObserver;
+import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import com.android.photos.views.TiledImageRenderer.TileSource;
import com.android.photos.views.TiledImageView;
@@ -32,6 +33,8 @@ public class CropView extends TiledImageView implements OnScaleGestureListener {
private ScaleGestureDetector mScaleGestureDetector;
private float mLastX, mLastY;
private float mMinScale;
+ private boolean mTouchEnabled = true;
+ private RectF mTempEdges = new RectF();
public CropView(Context context) {
this(context, null);
@@ -42,7 +45,7 @@ public class CropView extends TiledImageView implements OnScaleGestureListener {
mScaleGestureDetector = new ScaleGestureDetector(context, this);
}
- public RectF getCrop() {
+ private void getEdgesHelper(RectF edgesOut) {
final float width = getWidth();
final float height = getHeight();
final float imageWidth = mRenderer.source.getImageWidth();
@@ -53,13 +56,25 @@ public class CropView extends TiledImageView implements OnScaleGestureListener {
float centerY = (height / 2f - mRenderer.centerY + (imageHeight - height) / 2f)
* scale + height / 2f;
float leftEdge = centerX - imageWidth / 2f * scale;
+ float rightEdge = centerX + imageWidth / 2f * scale;
float topEdge = centerY - imageHeight / 2f * scale;
+ float bottomEdge = centerY + imageHeight / 2f * scale;
- float cropLeft = -leftEdge / scale;
- float cropTop = -topEdge / scale;
- float cropRight = cropLeft + width / scale;
- float cropBottom = cropTop + height / scale;
- RectF cropRect = new RectF(cropLeft, cropTop, cropRight, cropBottom);
+ edgesOut.left = leftEdge;
+ edgesOut.right = rightEdge;
+ edgesOut.top = topEdge;
+ edgesOut.bottom = bottomEdge;
+ }
+
+ public RectF getCrop() {
+ final RectF edges = mTempEdges;
+ getEdgesHelper(edges);
+ final float scale = mRenderer.scale;
+
+ float cropLeft = -edges.left / scale;
+ float cropTop = -edges.top / scale;
+ float cropRight = cropLeft + getWidth() / scale;
+ float cropBottom = cropTop + getHeight() / scale;
return new RectF(cropLeft, cropTop, cropRight, cropBottom);
}
@@ -102,8 +117,32 @@ public class CropView extends TiledImageView implements OnScaleGestureListener {
public void onScaleEnd(ScaleGestureDetector detector) {
}
+ public void moveToUpperLeft() {
+ if (getWidth() == 0 || getHeight() == 0) {
+ final ViewTreeObserver observer = getViewTreeObserver();
+ observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
+ public void onGlobalLayout() {
+ moveToUpperLeft();
+ getViewTreeObserver().removeOnGlobalLayoutListener(this);
+ }
+ });
+ }
+ final RectF edges = mTempEdges;
+ getEdgesHelper(edges);
+ final float scale = mRenderer.scale;
+ mRenderer.centerX += Math.ceil(edges.left / scale);
+ mRenderer.centerY += Math.ceil(edges.top / scale);
+ }
+
+ public void setTouchEnabled(boolean enabled) {
+ mTouchEnabled = enabled;
+ }
+
@Override
public boolean onTouchEvent(MotionEvent event) {
+ if (!mTouchEnabled) {
+ return true;
+ }
int action = event.getActionMasked();
final boolean pointerUp = action == MotionEvent.ACTION_POINTER_UP;
final int skipIndex = pointerUp ? event.getActionIndex() : -1;
@@ -133,30 +172,20 @@ public class CropView extends TiledImageView implements OnScaleGestureListener {
if (mRenderer.source != null) {
// Adjust position so that the wallpaper covers the entire area
// of the screen
- final float width = getWidth();
- final float height = getHeight();
- final float imageWidth = mRenderer.source.getImageWidth();
- final float imageHeight = mRenderer.source.getImageHeight();
+ final RectF edges = mTempEdges;
+ getEdgesHelper(edges);
final float scale = mRenderer.scale;
- float centerX = (width / 2f - mRenderer.centerX + (imageWidth - width) / 2f)
- * scale + width / 2f;
- float centerY = (height / 2f - mRenderer.centerY + (imageHeight - height) / 2f)
- * scale + height / 2f;
- float leftEdge = centerX - imageWidth / 2f * scale;
- float rightEdge = centerX + imageWidth / 2f * scale;
- float topEdge = centerY - imageHeight / 2f * scale;
- float bottomEdge = centerY + imageHeight / 2f * scale;
- if (leftEdge > 0) {
- mRenderer.centerX += Math.ceil(leftEdge / scale);
+ if (edges.left > 0) {
+ mRenderer.centerX += Math.ceil(edges.left / scale);
}
- if (rightEdge < getWidth()) {
- mRenderer.centerX += (rightEdge - getWidth()) / scale;
+ if (edges.right < getWidth()) {
+ mRenderer.centerX += (edges.right - getWidth()) / scale;
}
- if (topEdge > 0) {
- mRenderer.centerY += Math.ceil(topEdge / scale);
+ if (edges.top > 0) {
+ mRenderer.centerY += Math.ceil(edges.top / scale);
}
- if (bottomEdge < getHeight()) {
- mRenderer.centerY += (bottomEdge - getHeight()) / scale;
+ if (edges.bottom < getHeight()) {
+ mRenderer.centerY += (edges.bottom - getHeight()) / scale;
}
}
}
diff --git a/src/com/android/launcher3/WallpaperPickerActivity.java b/src/com/android/launcher3/WallpaperPickerActivity.java
index 03274213f..7c84c7fa6 100644
--- a/src/com/android/launcher3/WallpaperPickerActivity.java
+++ b/src/com/android/launcher3/WallpaperPickerActivity.java
@@ -95,9 +95,12 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
} else if (meta.mGalleryImageUri != null) {
mCropView.setTileSource(new BitmapRegionTileSource(WallpaperPickerActivity.this,
meta.mGalleryImageUri, 1024, 0), null);
+ mCropView.setTouchEnabled(true);
} else {
mCropView.setTileSource(new BitmapRegionTileSource(WallpaperPickerActivity.this,
meta.mWallpaperResId, 1024, 0), null);
+ mCropView.setTouchEnabled(false);
+ mCropView.moveToUpperLeft();
}
}
};