80 lines
3.0 KiB
Java
80 lines
3.0 KiB
Java
/*
|
|
* 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:
|
|
* <ul>
|
|
* <li>Dispatch {@link WindowInsetsAnimation.Callback#onPrepare}</li>
|
|
* <li>Update insets state and run layout according to {@code layoutDuringAnimation}</li>
|
|
* <li>Dispatch {@link WindowInsetsAnimation.Callback#onStart}</li>
|
|
* <li>Dispatch {@link WindowInsetsAnimationControlListener#onReady}</li>
|
|
* </ul>
|
|
*/
|
|
<T extends InsetsAnimationControlRunner & InternalInsetsAnimationController>
|
|
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);
|
|
}
|