Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b17d1e5e authored by Gus Prevas's avatar Gus Prevas Committed by Android (Google) Code Review
Browse files

Merge "Adds an option to override RemoteViews transition." into cw-e-dev

parents 3af6163a 1ed322b1
Loading
Loading
Loading
Loading
+38 −3
Original line number Diff line number Diff line
@@ -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,
                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.
     *
+3 −0
Original line number Diff line number Diff line
@@ -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>
+7 −0
Original line number Diff line number Diff line
@@ -2144,6 +2144,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>

    <!-- ============================= -->
+4 −0
Original line number Diff line number Diff line
@@ -2217,6 +2217,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:
+1 −0
Original line number Diff line number Diff line
@@ -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>
Loading