/* * Copyright (C) 2019 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.view; import android.view.WindowInsets.Type.InsetsType; import android.view.WindowInsetsAnimation.Bounds; /** * Provide an interface to let InsetsAnimationControlImpl and InsetsResizeAnimationRunner call back * into its owner. * @hide */ public interface InsetsAnimationControlCallbacks { /** * Executes the necessary code to start the animation in the correct order, including: * */ void startAnimation(T runner, WindowInsetsAnimationControlListener listener, int types, WindowInsetsAnimation animation, Bounds bounds); /** * Schedule the apply by posting the animation callback. * * @param runner The runner that requested applying insets */ void scheduleApplyChangeInsets(InsetsAnimationControlRunner runner); /** * Finish the final steps after the animation. * @param runner The runner used to run the animation. * @param shown {@code true} if the insets are shown. */ void notifyFinished(InsetsAnimationControlRunner runner, boolean shown); /** * Apply the new params to the surface. * @param params The {@link android.view.SyncRtSurfaceTransactionApplier.SurfaceParams} to * apply. */ void applySurfaceParams(SyncRtSurfaceTransactionApplier.SurfaceParams... params); /** * Post a message to release the Surface, guaranteed to happen after all * previous calls to applySurfaceParams. */ void releaseSurfaceControlFromRt(SurfaceControl sc); /** * Reports that the perceptibility of the given types has changed to the given value. * * A type is perceptible if it is not (almost) entirely off-screen and not (almost) entirely * transparent. * * @param types the (public) types whose perceptibility has changed * @param perceptible true, if the types are now perceptible, false if they are not perceptible */ void reportPerceptible(@InsetsType int types, boolean perceptible); }