blob: 74c186948b2f2bd878ac7b8965cc516d14454393 [file] [log] [blame]
Yunfan Chen02abf552019-12-05 14:51:09 +09001/*
2 * Copyright (C) 2019 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
17package android.view;
18
Adrian Roosdb5b0c22020-02-12 15:05:27 -080019import android.view.WindowInsetsAnimation.Bounds;
Jorim Jaggia51168a2019-12-27 15:17:44 +010020
Yunfan Chen02abf552019-12-05 14:51:09 +090021/**
22 * Provide an interface to let InsetsAnimationControlImpl call back into its owner.
23 * @hide
24 */
25public interface InsetsAnimationControlCallbacks {
Jorim Jaggia51168a2019-12-27 15:17:44 +010026
Yunfan Chen02abf552019-12-05 14:51:09 +090027 /**
Jorim Jaggia51168a2019-12-27 15:17:44 +010028 * Executes the necessary code to start the animation in the correct order, including:
29 * <ul>
Adrian Roosdb5b0c22020-02-12 15:05:27 -080030 * <li>Dispatch {@link WindowInsetsAnimation.Callback#onPrepare}</li>
Jorim Jaggia51168a2019-12-27 15:17:44 +010031 * <li>Update insets state and run layout according to {@code layoutDuringAnimation}</li>
Adrian Roosdb5b0c22020-02-12 15:05:27 -080032 * <li>Dispatch {@link WindowInsetsAnimation.Callback#onStart}</li>
Jorim Jaggia51168a2019-12-27 15:17:44 +010033 * <li>Dispatch {@link WindowInsetsAnimationControlListener#onReady}</li>
34 * </ul>
Yunfan Chen02abf552019-12-05 14:51:09 +090035 */
Jorim Jaggia51168a2019-12-27 15:17:44 +010036 void startAnimation(InsetsAnimationControlImpl controller,
Adrian Roosdb5b0c22020-02-12 15:05:27 -080037 WindowInsetsAnimationControlListener listener, int types,
38 WindowInsetsAnimation animation,
Jorim Jaggi6d5c8012020-02-28 01:40:27 +010039 Bounds bounds);
Yunfan Chen02abf552019-12-05 14:51:09 +090040
41 /**
42 * Schedule the apply by posting the animation callback.
Adrian Roos6a4448f2020-04-01 15:01:08 +020043 *
44 * @param runner The runner that requested applying insets
Yunfan Chen02abf552019-12-05 14:51:09 +090045 */
Adrian Roos6a4448f2020-04-01 15:01:08 +020046 void scheduleApplyChangeInsets(InsetsAnimationControlRunner runner);
Yunfan Chen02abf552019-12-05 14:51:09 +090047
48 /**
49 * Finish the final steps after the animation.
Jorim Jaggi6d5c8012020-02-28 01:40:27 +010050 * @param runner The runner used to run the animation.
Yunfan Chen02abf552019-12-05 14:51:09 +090051 * @param shown {@code true} if the insets are shown.
52 */
Jorim Jaggi6d5c8012020-02-28 01:40:27 +010053 void notifyFinished(InsetsAnimationControlRunner runner, boolean shown);
Yunfan Chen02abf552019-12-05 14:51:09 +090054
55 /**
Yunfan Chen02abf552019-12-05 14:51:09 +090056 * Apply the new params to the surface.
57 * @param params The {@link android.view.SyncRtSurfaceTransactionApplier.SurfaceParams} to
58 * apply.
59 */
60 void applySurfaceParams(SyncRtSurfaceTransactionApplier.SurfaceParams... params);
Rob Carr3a367c42020-03-10 15:51:35 -070061
62 /**
63 * Post a message to release the Surface, guaranteed to happen after all
64 * previous calls to applySurfaceParams.
65 */
66 void releaseSurfaceControlFromRt(SurfaceControl sc);
Yunfan Chen02abf552019-12-05 14:51:09 +090067}