• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.window;
18 
19 import android.view.SurfaceControl;
20 import android.window.IRemoteTransitionFinishedCallback;
21 import android.window.TransitionInfo;
22 
23 /**
24  * Interface allowing remote processes to play transition animations.
25  * The usage flow is as follows:
26  * <p><ol>
27  *  <li>The remote tags a lifecycle event with an IRemoteTransition (via a parameter in
28  *      ActivityOptions#makeRemoteAnimation) or a transition matches a filter registered via
29  *      Transitions#registerRemote.
30  *  <li>Shell then associates the transition for the event with the IRemoteTransition
31  *  <li>Shell receives onTransitionReady and delegates the animation to the IRemoteTransition
32  *      via {@link #startAnimation}.
33  *  <li>Once the IRemoteTransition is done animating, it will call the finishCallback.
34  *  <li>Shell/Core finish-up the transition.
35  * </ul>
36  *
37  * {@hide}
38  */
39 oneway interface IRemoteTransition {
40     /**
41      * Starts a transition animation. Once complete, the implementation should call
42      * `finishCallback`.
43      *
44      * @param token An identifier for the transition that should be animated.
45      */
startAnimation(in IBinder token, in TransitionInfo info, in SurfaceControl.Transaction t, in IRemoteTransitionFinishedCallback finishCallback)46     void startAnimation(in IBinder token, in TransitionInfo info, in SurfaceControl.Transaction t,
47             in IRemoteTransitionFinishedCallback finishCallback);
48 
49     /**
50      * Attempts to merge a transition animation into the animation that is currently
51      * being played by this remote. If merge is not possible/supported, this should be a no-op.
52      * If it *is* merged, the implementation should call `finishCallback` immediately.
53      *
54      * @param transition An identifier for the transition that wants to be merged.
55      * @param mergeTarget The transition that is currently being animated by this remote.
56      *                    If it can be merged, call `finishCallback`; otherwise, do
57      *                    nothing.
58      */
mergeAnimation(in IBinder transition, in TransitionInfo info, in SurfaceControl.Transaction t, in IBinder mergeTarget, in IRemoteTransitionFinishedCallback finishCallback)59     void mergeAnimation(in IBinder transition, in TransitionInfo info,
60             in SurfaceControl.Transaction t, in IBinder mergeTarget,
61             in IRemoteTransitionFinishedCallback finishCallback);
62 }
63