diff options
| author | Gus Prevas <kprevas@google.com> | 2015-09-17 17:34:46 -0400 |
|---|---|---|
| committer | Gus Prevas <kprevas@google.com> | 2015-09-25 13:10:52 -0400 |
| commit | 1ed322b123b5aa8cd02c036e5e3393b6a79f559f (patch) | |
| tree | d08adcece2b43a58edddbe09d872ff2304f420aa /core/java/android/widget | |
| parent | de02fe2afdc835eca72bb05a1514daa439bb2b40 (diff) | |
| download | frameworks_base-1ed322b123b5aa8cd02c036e5e3393b6a79f559f.zip frameworks_base-1ed322b123b5aa8cd02c036e5e3393b6a79f559f.tar.gz frameworks_base-1ed322b123b5aa8cd02c036e5e3393b6a79f559f.tar.bz2 | |
Adds an option to override RemoteViews transition.
This change adds a configuration option,
"config_overrideRemoteViewsActivityTransition", which is false by
default and true on watches. If it's true, when a RemoteViews
is clicked, it will use a new attribute on the active window animation
style, "activityOpenRemoteViewsEnterAnimation", to determine
the entry transition to use, instead of the current hard-coded
default.
Bug: 23534750
Change-Id: I91e92804a663ab71a3e46c3430fa579b87cc7931
Diffstat (limited to 'core/java/android/widget')
| -rw-r--r-- | core/java/android/widget/RemoteViews.java | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 7ca3339..ca1b211 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -31,6 +31,7 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; +import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.PorterDuff; import android.graphics.Rect; @@ -55,6 +56,8 @@ import android.view.ViewGroup; import android.widget.AdapterView.OnItemClickListener; import libcore.util.Objects; +import com.android.internal.R; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -206,14 +209,22 @@ public class RemoteViews implements Parcelable, Filter { /** @hide */ public static class OnClickHandler { + + private int mEnterAnimationId; + public boolean onClickHandler(View view, PendingIntent pendingIntent, Intent fillInIntent) { try { // TODO: Unregister this handler if PendingIntent.FLAG_ONE_SHOT? Context context = view.getContext(); - ActivityOptions opts = ActivityOptions.makeScaleUpAnimation(view, - 0, 0, - view.getMeasuredWidth(), view.getMeasuredHeight()); + ActivityOptions opts; + if (mEnterAnimationId != 0) { + opts = ActivityOptions.makeCustomAnimation(context, mEnterAnimationId, 0); + } else { + opts = ActivityOptions.makeScaleUpAnimation(view, + 0, 0, + view.getMeasuredWidth(), view.getMeasuredHeight()); + } context.startIntentSender( pendingIntent.getIntentSender(), fillInIntent, Intent.FLAG_ACTIVITY_NEW_TASK, @@ -228,6 +239,10 @@ public class RemoteViews implements Parcelable, Filter { } return true; } + + public void setEnterAnimationId(int enterAnimationId) { + mEnterAnimationId = enterAnimationId; + } } /** @@ -2761,11 +2776,31 @@ public class RemoteViews implements Parcelable, Filter { inflater.setFilter(this); result = inflater.inflate(rvToApply.getLayoutId(), parent, false); + loadTransitionOverride(context, handler); + rvToApply.performApply(result, parent, handler); return result; } + private static void loadTransitionOverride(Context context, + RemoteViews.OnClickHandler handler) { + if (handler != null && context.getResources().getBoolean( + com.android.internal.R.bool.config_overrideRemoteViewsActivityTransition)) { + TypedArray windowStyle = context.getTheme().obtainStyledAttributes( + com.android.internal.R.styleable.Window); + int windowAnimations = windowStyle.getResourceId( + com.android.internal.R.styleable.Window_windowAnimationStyle, 0); + TypedArray windowAnimationStyle = context.obtainStyledAttributes( + windowAnimations, com.android.internal.R.styleable.WindowAnimation); + handler.setEnterAnimationId(windowAnimationStyle.getResourceId( + com.android.internal.R.styleable. + WindowAnimation_activityOpenRemoteViewsEnterAnimation, 0)); + windowStyle.recycle(); + windowAnimationStyle.recycle(); + } + } + /** * Applies all of the actions to the provided view. * |
