diff options
author | Dianne Hackborn <hackbod@google.com> | 2012-05-07 16:12:44 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-05-07 16:12:44 -0700 |
commit | 8e11051a06b3362b7d7cda654f8dcb5ca3760494 (patch) | |
tree | a5e5a71519ba01f466ace969ada0523e1a2a34aa | |
parent | ebd6016b8c6faf70b44283c59461023cda1ca6b0 (diff) | |
parent | d367ca88eeede24e7d9a51ae85996a9d08d734b2 (diff) | |
download | frameworks_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.java | 12 | ||||
-rw-r--r-- | services/java/com/android/server/am/ActivityRecord.java | 15 | ||||
-rw-r--r-- | services/java/com/android/server/am/TaskRecord.java | 4 |
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(); |