summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2012-05-07 16:12:44 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-05-07 16:12:44 -0700
commit8e11051a06b3362b7d7cda654f8dcb5ca3760494 (patch)
treea5e5a71519ba01f466ace969ada0523e1a2a34aa
parentebd6016b8c6faf70b44283c59461023cda1ca6b0 (diff)
parentd367ca88eeede24e7d9a51ae85996a9d08d734b2 (diff)
downloadframeworks_base-8e11051a06b3362b7d7cda654f8dcb5ca3760494.zip
frameworks_base-8e11051a06b3362b7d7cda654f8dcb5ca3760494.tar.gz
frameworks_base-8e11051a06b3362b7d7cda654f8dcb5ca3760494.tar.bz2
Merge "Tweak anim API to automatically call Intent.setSourceBounds()." into jb-dev
-rw-r--r--core/java/android/app/ActivityOptions.java12
-rw-r--r--services/java/com/android/server/am/ActivityRecord.java15
-rw-r--r--services/java/com/android/server/am/TaskRecord.java4
3 files changed, 29 insertions, 2 deletions
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java
index b730581..3d0b7d8 100644
--- a/core/java/android/app/ActivityOptions.java
+++ b/core/java/android/app/ActivityOptions.java
@@ -147,12 +147,17 @@ public class ActivityOptions {
* activity is scaled from a small originating area of the screen to
* its final full representation.
*
+ * <p>If the Intent this is being used with has not set its
+ * {@link android.content.Intent#setSourceBounds Intent.setSourceBounds},
+ * those bounds will be filled in for you based on the initial
+ * bounds passed in here.
+ *
* @param source The View that the new activity is animating from. This
* defines the coordinate space for <var>startX</var> and <var>startY</var>.
* @param startX The x starting location of the new activity, relative to <var>source</var>.
* @param startY The y starting location of the activity, relative to <var>source</var>.
* @param startWidth The initial width of the new activity.
- * @param startWidth The initial height of the new activity.
+ * @param startHeight The initial height of the new activity.
* @return Returns a new ActivityOptions object that you can use to
* supply these options as the options Bundle when starting an activity.
*/
@@ -175,6 +180,11 @@ public class ActivityOptions {
* is scaled from a given position to the new activity window that is
* being started.
*
+ * <p>If the Intent this is being used with has not set its
+ * {@link android.content.Intent#setSourceBounds Intent.setSourceBounds},
+ * those bounds will be filled in for you based on the initial
+ * thumbnail location and size provided here.
+ *
* @param source The View that this thumbnail is animating from. This
* defines the coordinate space for <var>startX</var> and <var>startY</var>.
* @param thumbnail The bitmap that will be shown as the initial thumbnail
diff --git a/services/java/com/android/server/am/ActivityRecord.java b/services/java/com/android/server/am/ActivityRecord.java
index cce8e7a..97bfd6f 100644
--- a/services/java/com/android/server/am/ActivityRecord.java
+++ b/services/java/com/android/server/am/ActivityRecord.java
@@ -29,6 +29,7 @@ import android.content.pm.ApplicationInfo;
import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.graphics.Bitmap;
+import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
@@ -562,12 +563,26 @@ final class ActivityRecord {
service.mWindowManager.overridePendingAppTransitionScaleUp(
pendingOptions.getStartX(), pendingOptions.getStartY(),
pendingOptions.getStartWidth(), pendingOptions.getStartHeight());
+ if (intent.getSourceBounds() == null) {
+ intent.setSourceBounds(new Rect(pendingOptions.getStartX(),
+ pendingOptions.getStartY(),
+ pendingOptions.getStartX()+pendingOptions.getStartWidth(),
+ pendingOptions.getStartY()+pendingOptions.getStartHeight()));
+ }
break;
case ActivityOptions.ANIM_THUMBNAIL:
service.mWindowManager.overridePendingAppTransitionThumb(
pendingOptions.getThumbnail(),
pendingOptions.getStartX(), pendingOptions.getStartY(),
pendingOptions.getOnAnimationStartListener());
+ if (intent.getSourceBounds() == null) {
+ intent.setSourceBounds(new Rect(pendingOptions.getStartX(),
+ pendingOptions.getStartY(),
+ pendingOptions.getStartX()
+ + pendingOptions.getThumbnail().getWidth(),
+ pendingOptions.getStartY()
+ + pendingOptions.getThumbnail().getHeight()));
+ }
break;
}
pendingOptions = null;
diff --git a/services/java/com/android/server/am/TaskRecord.java b/services/java/com/android/server/am/TaskRecord.java
index e3ebcc6..4b4a89d 100644
--- a/services/java/com/android/server/am/TaskRecord.java
+++ b/services/java/com/android/server/am/TaskRecord.java
@@ -63,9 +63,10 @@ class TaskRecord extends ThumbnailHolder {
// If this Intent has a selector, we want to clear it for the
// recent task since it is not relevant if the user later wants
// to re-launch the app.
- if (_intent.getSelector() != null) {
+ if (_intent.getSelector() != null || _intent.getSourceBounds() != null) {
_intent = new Intent(_intent);
_intent.setSelector(null);
+ _intent.setSourceBounds(null);
}
}
intent = _intent;
@@ -78,6 +79,7 @@ class TaskRecord extends ThumbnailHolder {
Intent targetIntent = new Intent(_intent);
targetIntent.setComponent(targetComponent);
targetIntent.setSelector(null);
+ targetIntent.setSourceBounds(null);
intent = targetIntent;
realActivity = targetComponent;
origActivity = _intent.getComponent();