diff options
| author | 2015-09-25 18:59:45 +0000 | |
|---|---|---|
| committer | 2015-09-25 18:59:45 +0000 | |
| commit | efca0aa919e33236178e5db166bd05f12ae14a8f (patch) | |
| tree | 5ef94ac1dc028e9ee193f54859949424c13a9852 | |
| parent | 3a089750009f4a7c49e260e686769e8198df4a8c (diff) | |
| parent | 3197cd36fef11b1fdd59bdd341f65f9f2364ed2a (diff) | |
am 3197cd36: am 41110261: am b17d1e5e: Merge "Adds an option to override RemoteViews transition." into cw-e-dev
* commit '3197cd36fef11b1fdd59bdd341f65f9f2364ed2a':
Adds an option to override RemoteViews transition.
| -rw-r--r-- | core/java/android/widget/RemoteViews.java | 41 | ||||
| -rw-r--r-- | core/res/res/values-watch/config.xml | 3 | ||||
| -rw-r--r-- | core/res/res/values/attrs.xml | 7 | ||||
| -rw-r--r-- | core/res/res/values/config.xml | 4 | ||||
| -rw-r--r-- | core/res/res/values/styles_micro.xml | 1 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 1 |
6 files changed, 54 insertions, 3 deletions
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 7ca333947918..ca1b211bc291 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. * diff --git a/core/res/res/values-watch/config.xml b/core/res/res/values-watch/config.xml index 41b05ea8757a..919519e5832a 100644 --- a/core/res/res/values-watch/config.xml +++ b/core/res/res/values-watch/config.xml @@ -54,4 +54,7 @@ <!-- Do not show the message saying USB is connected in charging mode. --> <bool name="config_usbChargingMessage">false</bool> + + <!-- Use a custom transition for RemoteViews. --> + <bool name="config_overrideRemoteViewsActivityTransition">true</bool> </resources> diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index dc96df4e9d7c..83d9a3cb8290 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -2150,6 +2150,13 @@ i (which is exiting the screen). The wallpaper remains static behind the animation. --> <attr name="wallpaperIntraCloseExitAnimation" format="reference" /> + + <!-- When opening a new activity from a RemoteViews, this is the + animation that is run on the next activity (which is entering the + screen). Requires config_overrideRemoteViewsActivityTransition to + be true. --> + <attr name="activityOpenRemoteViewsEnterAnimation" format="reference" /> + </declare-styleable> <!-- ============================= --> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 9b1a613894d9..24d760fddbf8 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2214,6 +2214,10 @@ <bool name="config_defaultWindowFeatureOptionsPanel">true</bool> <bool name="config_defaultWindowFeatureContextMenu">true</bool> + <!-- If true, the transition for a RemoteViews is read from a resource instead of using the + default scale-up transition. --> + <bool name="config_overrideRemoteViewsActivityTransition">false</bool> + <!-- This config is used to check if the carrier requires converting destination number before sending out a SMS. Formats for this configuration as below: diff --git a/core/res/res/values/styles_micro.xml b/core/res/res/values/styles_micro.xml index c6052fffd2e2..05835e7b41ab 100644 --- a/core/res/res/values/styles_micro.xml +++ b/core/res/res/values/styles_micro.xml @@ -18,6 +18,7 @@ <style name="Animation.Micro.Activity" parent="Animation.Material.Activity"> <item name="activityOpenEnterAnimation">@anim/slide_in_micro</item> + <item name="activityOpenRemoteViewsEnterAnimation">@anim/slide_in_micro</item> <item name="activityOpenExitAnimation">@null</item> <item name="activityCloseEnterAnimation">@null</item> <item name="activityCloseExitAnimation">@anim/slide_out_micro</item> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index b5efbfd2462a..028b95d117db 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2191,6 +2191,7 @@ <java-symbol type="bool" name="config_sms_force_7bit_encoding" /> <java-symbol type="bool" name="config_defaultWindowFeatureOptionsPanel" /> <java-symbol type="bool" name="config_defaultWindowFeatureContextMenu" /> + <java-symbol type="bool" name="config_overrideRemoteViewsActivityTransition" /> <java-symbol type="layout" name="simple_account_item" /> <java-symbol type="array" name="config_sms_convert_destination_number_support" /> |