summaryrefslogtreecommitdiffstats
path: root/WallpaperPicker/src/com/android
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2015-09-02 16:55:58 -0700
committerTony Wickham <twickham@google.com>2015-09-08 18:24:58 -0700
commit86fb39930928159bd1210404e6f973060272a648 (patch)
treea78ff923d980dd8c4d251edcdcff973c629e3753 /WallpaperPicker/src/com/android
parent8010486e8badc563fdd6e309a5ddba2e1fecfbf5 (diff)
downloadandroid_packages_apps_Trebuchet-86fb39930928159bd1210404e6f973060272a648.tar.gz
android_packages_apps_Trebuchet-86fb39930928159bd1210404e6f973060272a648.tar.bz2
android_packages_apps_Trebuchet-86fb39930928159bd1210404e6f973060272a648.zip
Fade from wallpaper picker activity back to homescreen.
If a wallpaper preview is going to look exactly the same as the actual wallpaper on the homescreen page that is being returned to, fading looks much nicer than the default activity exit animation. Bug: 23568800 Change-Id: Id7c2b5483c5535d59be2f8a459ce7788e3c8318a
Diffstat (limited to 'WallpaperPicker/src/com/android')
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java34
-rw-r--r--WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java40
-rw-r--r--WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java2
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/FileWallpaperInfo.java3
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java2
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ThirdPartyWallpaperInfo.java4
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/UriWallpaperInfo.java3
7 files changed, 56 insertions, 32 deletions
diff --git a/WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java b/WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java
index 45118bf45..1d8e37dc2 100644
--- a/WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java
+++ b/WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java
@@ -45,6 +45,10 @@ public class BitmapCropTask extends AsyncTask<Void, Void, Boolean> {
public void onBitmapCropped(byte[] imageBytes);
}
+ public interface OnEndCropHandler {
+ public void run(boolean cropSucceeded);
+ }
+
private static final int DEFAULT_COMPRESS_QUALITY = 90;
private static final String LOGTAG = "BitmapCropTask";
@@ -59,56 +63,56 @@ public class BitmapCropTask extends AsyncTask<Void, Void, Boolean> {
boolean mSetWallpaper;
boolean mSaveCroppedBitmap;
Bitmap mCroppedBitmap;
- Runnable mOnEndRunnable;
+ BitmapCropTask.OnEndCropHandler mOnEndCropHandler;
Resources mResources;
BitmapCropTask.OnBitmapCroppedHandler mOnBitmapCroppedHandler;
boolean mNoCrop;
public BitmapCropTask(Context c, String filePath,
RectF cropBounds, int rotation, int outWidth, int outHeight,
- boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) {
+ boolean setWallpaper, boolean saveCroppedBitmap, OnEndCropHandler onEndCropHandler) {
mContext = c;
mInFilePath = filePath;
init(cropBounds, rotation,
- outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable);
+ outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndCropHandler);
}
public BitmapCropTask(byte[] imageBytes,
RectF cropBounds, int rotation, int outWidth, int outHeight,
- boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) {
+ boolean setWallpaper, boolean saveCroppedBitmap, OnEndCropHandler onEndCropHandler) {
mInImageBytes = imageBytes;
init(cropBounds, rotation,
- outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable);
+ outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndCropHandler);
}
public BitmapCropTask(Context c, Uri inUri,
RectF cropBounds, int rotation, int outWidth, int outHeight,
- boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) {
+ boolean setWallpaper, boolean saveCroppedBitmap, OnEndCropHandler onEndCropHandler) {
mContext = c;
mInUri = inUri;
init(cropBounds, rotation,
- outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable);
+ outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndCropHandler);
}
public BitmapCropTask(Context c, Resources res, int inResId,
RectF cropBounds, int rotation, int outWidth, int outHeight,
- boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) {
+ boolean setWallpaper, boolean saveCroppedBitmap, OnEndCropHandler onEndCropHandler) {
mContext = c;
mInResId = inResId;
mResources = res;
init(cropBounds, rotation,
- outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndRunnable);
+ outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndCropHandler);
}
private void init(RectF cropBounds, int rotation, int outWidth, int outHeight,
- boolean setWallpaper, boolean saveCroppedBitmap, Runnable onEndRunnable) {
+ boolean setWallpaper, boolean saveCroppedBitmap, OnEndCropHandler onEndCropHandler) {
mCropBounds = cropBounds;
mRotation = rotation;
mOutWidth = outWidth;
mOutHeight = outHeight;
mSetWallpaper = setWallpaper;
mSaveCroppedBitmap = saveCroppedBitmap;
- mOnEndRunnable = onEndRunnable;
+ mOnEndCropHandler = onEndCropHandler;
}
public void setOnBitmapCropped(BitmapCropTask.OnBitmapCroppedHandler handler) {
@@ -119,8 +123,8 @@ public class BitmapCropTask extends AsyncTask<Void, Void, Boolean> {
mNoCrop = value;
}
- public void setOnEndRunnable(Runnable onEndRunnable) {
- mOnEndRunnable = onEndRunnable;
+ public void setOnEndCropHandler(OnEndCropHandler onEndCropHandler) {
+ mOnEndCropHandler = onEndCropHandler;
}
// Helper to setup input stream
@@ -398,8 +402,8 @@ public class BitmapCropTask extends AsyncTask<Void, Void, Boolean> {
@Override
protected void onPostExecute(Boolean result) {
- if (mOnEndRunnable != null) {
- mOnEndRunnable.run();
+ if (mOnEndCropHandler != null) {
+ mOnEndCropHandler.run(result);
}
}
} \ No newline at end of file
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
index efa1181ae..b562fbf88 100644
--- a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
+++ b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
@@ -108,7 +108,9 @@ public class WallpaperCropActivity extends BaseActivity implements Handler.Callb
new View.OnClickListener() {
@Override
public void onClick(View v) {
- cropImageAndSetWallpaper(imageUri, null);
+ // Never fade on finish because we return to the app that started us (e.g.
+ // Photos), not the home screen.
+ cropImageAndSetWallpaper(imageUri, null, false /* shouldFadeOutOnFinish */);
}
});
mSetWallpaperButton = findViewById(R.id.set_wallpaper_button);
@@ -306,17 +308,18 @@ public class WallpaperCropActivity extends BaseActivity implements Handler.Callb
return getResources().getBoolean(R.bool.allow_rotation);
}
- public void setWallpaper(Uri uri) {
+ public void setWallpaper(Uri uri, boolean shouldFadeOutOnFinish) {
int rotation = BitmapUtils.getRotationFromExif(getContext(), uri);
BitmapCropTask cropTask = new BitmapCropTask(
getContext(), uri, null, rotation, 0, 0, true, false, null);
- CropAndFinishRunnable onEndCrop = new CropAndFinishRunnable(cropTask.getImageBounds());
- cropTask.setOnEndRunnable(onEndCrop);
+ BitmapCropTask.OnEndCropHandler onEndCrop = new CropAndFinishHandler(
+ cropTask.getImageBounds(), shouldFadeOutOnFinish);
+ cropTask.setOnEndCropHandler(onEndCrop);
cropTask.setNoCrop(true);
cropTask.execute();
}
- public void cropImageAndSetWallpaper(Resources res, int resId) {
+ public void cropImageAndSetWallpaper(Resources res, int resId, boolean shouldFadeOutOnFinish) {
// crop this image and scale it down to the default wallpaper size for
// this device
int rotation = BitmapUtils.getRotationFromExif(res, resId, this);
@@ -327,7 +330,8 @@ public class WallpaperCropActivity extends BaseActivity implements Handler.Callb
inSize.x, inSize.y, outSize.x, outSize.y, false);
// Passing 0, 0 will cause launcher to revert to using the
// default wallpaper size
- CropAndFinishRunnable onEndCrop = new CropAndFinishRunnable(new Point(0, 0));
+ CropAndFinishHandler onEndCrop = new CropAndFinishHandler(new Point(0, 0),
+ shouldFadeOutOnFinish);
BitmapCropTask cropTask = new BitmapCropTask(getContext(), res, resId,
crop, rotation, outSize.x, outSize.y, true, false, onEndCrop);
cropTask.execute();
@@ -335,7 +339,8 @@ public class WallpaperCropActivity extends BaseActivity implements Handler.Callb
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public void cropImageAndSetWallpaper(Uri uri,
- BitmapCropTask.OnBitmapCroppedHandler onBitmapCroppedHandler) {
+ BitmapCropTask.OnBitmapCroppedHandler onBitmapCroppedHandler,
+ boolean shouldFadeOutOnFinish) {
boolean centerCrop = getResources().getBoolean(R.bool.center_crop);
// Get the crop
boolean ltr = mCropView.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR;
@@ -411,7 +416,8 @@ public class WallpaperCropActivity extends BaseActivity implements Handler.Callb
final int outWidth = (int) Math.round(cropRect.width() * cropScale);
final int outHeight = (int) Math.round(cropRect.height() * cropScale);
- CropAndFinishRunnable onEndCrop = new CropAndFinishRunnable(new Point(outWidth, outHeight));
+ CropAndFinishHandler onEndCrop = new CropAndFinishHandler(new Point(outWidth, outHeight),
+ shouldFadeOutOnFinish);
BitmapCropTask cropTask = new BitmapCropTask(getContext(), uri,
cropRect, cropRotation, outWidth, outHeight, true, false, onEndCrop);
@@ -421,19 +427,29 @@ public class WallpaperCropActivity extends BaseActivity implements Handler.Callb
cropTask.execute();
}
- private class CropAndFinishRunnable implements Runnable {
+ public class CropAndFinishHandler implements BitmapCropTask.OnEndCropHandler {
private final Point mBounds;
-
- public CropAndFinishRunnable(Point bounds) {
+ private boolean mShouldFadeOutOnFinish;
+
+ /**
+ * @param shouldFadeOutOnFinish Whether the wallpaper picker should override the default
+ * exit animation to fade out instead. This should only be set to true if the wallpaper
+ * preview will exactly match the actual wallpaper on the page we are returning to.
+ */
+ public CropAndFinishHandler(Point bounds, boolean shouldFadeOutOnFinish) {
mBounds = bounds;
+ mShouldFadeOutOnFinish = shouldFadeOutOnFinish;
}
@Override
- public void run() {
+ public void run(boolean cropSucceeded) {
WallpaperUtils.saveWallpaperDimensions(mBounds.x, mBounds.y,
WallpaperCropActivity.this);
setResult(Activity.RESULT_OK);
finish();
+ if (cropSucceeded && mShouldFadeOutOnFinish) {
+ overridePendingTransition(0, R.anim.fade_out);
+ }
}
}
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
index 89ff04f13..27d60f8b8 100644
--- a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
+++ b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
@@ -169,7 +169,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity
// Populate the third-party wallpaper pickers
populateWallpapers((LinearLayout) findViewById(R.id.third_party_wallpaper_list),
- ThirdPartyWallpaperInfo.getAll(this), false);
+ ThirdPartyWallpaperInfo.getAll(this), false /* addLongPressHandler */);
// Add a tile for the Gallery
LinearLayout masterWallpaperList = (LinearLayout) findViewById(R.id.master_wallpaper_list);
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/FileWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/FileWallpaperInfo.java
index be93e1378..f6a46fc48 100644
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/FileWallpaperInfo.java
+++ b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/FileWallpaperInfo.java
@@ -36,7 +36,8 @@ public class FileWallpaperInfo extends DrawableThumbWallpaperInfo {
@Override
public void onSave(WallpaperPickerActivity a) {
- a.setWallpaper(Uri.fromFile(mFile));
+ boolean shouldFadeOutOnFinish = a.getWallpaperParallaxOffset() == 0f;
+ a.setWallpaper(Uri.fromFile(mFile), shouldFadeOutOnFinish);
}
@Override
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java
index a5becf1e7..d63714c22 100644
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java
+++ b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java
@@ -50,7 +50,7 @@ public class ResourceWallpaperInfo extends DrawableThumbWallpaperInfo {
@Override
public void onSave(WallpaperPickerActivity a) {
- a.cropImageAndSetWallpaper(mResources, mResId);
+ a.cropImageAndSetWallpaper(mResources, mResId, true /* shouldFadeOutOnFinish */);
}
@Override
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ThirdPartyWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ThirdPartyWallpaperInfo.java
index e7ea511e8..5e2538f84 100644
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ThirdPartyWallpaperInfo.java
+++ b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ThirdPartyWallpaperInfo.java
@@ -34,7 +34,9 @@ public class ThirdPartyWallpaperInfo extends WallpaperTileInfo {
final ComponentName itemComponentName = new ComponentName(
mResolveInfo.activityInfo.packageName, mResolveInfo.activityInfo.name);
Intent launchIntent = new Intent(Intent.ACTION_SET_WALLPAPER)
- .setComponent(itemComponentName);
+ .setComponent(itemComponentName)
+ .putExtra(WallpaperPickerActivity.EXTRA_WALLPAPER_OFFSET,
+ a.getWallpaperParallaxOffset());
a.startActivityForResultSafely(
launchIntent, WallpaperPickerActivity.PICK_WALLPAPER_THIRD_PARTY_ACTIVITY);
}
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/UriWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/UriWallpaperInfo.java
index 3e76fb886..180eb93e0 100644
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/UriWallpaperInfo.java
+++ b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/UriWallpaperInfo.java
@@ -60,7 +60,8 @@ public class UriWallpaperInfo extends DrawableThumbWallpaperInfo {
a.getSavedImages().writeImage(thumb, imageBytes);
}
};
- a.cropImageAndSetWallpaper(mUri, h);
+ boolean shouldFadeOutOnFinish = a.getWallpaperParallaxOffset() == 0f;
+ a.cropImageAndSetWallpaper(mUri, h, shouldFadeOutOnFinish);
}
@Override