/*
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.window;
import android.view.SurfaceControl;
import android.window.TransitionInfo;
import android.window.TransitionRequestInfo;
/**
* Implemented by WMShell to initiate and play transition animations.
* The flow (with {@link IWindowOrganizerController}) looks like this:
*
* - Core starts an activity and calls {@link #requestStartTransition}
*
- This TransitionPlayer impl does whatever, then calls
* {@link IWindowOrganizerController#startTransition} to tell Core to formally start (until
* this happens, Core will collect changes on the transition, but won't consider it ready to
* animate).
*
- Once all collected changes on the transition have finished drawing, Core will then call
* {@link #onTransitionReady} here to delegate the actual animation.
*
- Once this TransitionPlayer impl finishes animating, it notifies Core via
* {@link IWindowOrganizerController#finishTransition}. At this point, ITransitionPlayer's
* responsibilities end.
*
*
* {@hide}
*/
oneway interface ITransitionPlayer {
/**
* Called when all participants of a transition are ready to animate. This is in response to
* {@link IWindowOrganizerController#startTransition}.
*
* @param transitionToken An identifying token for the transition that is now ready to animate.
* @param info A collection of all the changes encapsulated by this transition.
* @param t A surface transaction containing the surface state prior to animating.
* @param finishT A surface transaction that will reset parenting/layering and generally put
* surfaces into their final (post-transition) state. Apply this after playing
* the animation but before calling finish.
*/
void onTransitionReady(in IBinder transitionToken, in TransitionInfo info,
in SurfaceControl.Transaction t, in SurfaceControl.Transaction finishT);
/**
* Called when something in WMCore requires a transition to play -- for example when an Activity
* is started in a new Task.
*
* @param transitionToken An identifying token for the transition that needs to be started.
* Pass this to {@link IWindowOrganizerController#startTransition}.
* @param request Information about this particular request.
*/
void requestStartTransition(in IBinder transitionToken, in TransitionRequestInfo request);
}