Loading core/java/android/window/BackEvent.java +1 −22 Original line number Diff line number Diff line Loading @@ -18,10 +18,8 @@ package android.window; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcelable; import android.view.RemoteAnimationTarget; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading Loading @@ -52,8 +50,6 @@ public class BackEvent implements Parcelable { @SwipeEdge private final int mSwipeEdge; @Nullable private final RemoteAnimationTarget mDepartingAnimationTarget; /** * Creates a new {@link BackEvent} instance. Loading @@ -62,16 +58,12 @@ public class BackEvent implements Parcelable { * @param touchY Absolute Y location of the touch point of this event. * @param progress Value between 0 and 1 on how far along the back gesture is. * @param swipeEdge Indicates which edge the swipe starts from. * @param departingAnimationTarget The remote animation target of the departing application * window. */ public BackEvent(float touchX, float touchY, float progress, @SwipeEdge int swipeEdge, @Nullable RemoteAnimationTarget departingAnimationTarget) { public BackEvent(float touchX, float touchY, float progress, @SwipeEdge int swipeEdge) { mTouchX = touchX; mTouchY = touchY; mProgress = progress; mSwipeEdge = swipeEdge; mDepartingAnimationTarget = departingAnimationTarget; } private BackEvent(@NonNull Parcel in) { Loading @@ -79,7 +71,6 @@ public class BackEvent implements Parcelable { mTouchY = in.readFloat(); mProgress = in.readFloat(); mSwipeEdge = in.readInt(); mDepartingAnimationTarget = in.readTypedObject(RemoteAnimationTarget.CREATOR); } public static final Creator<BackEvent> CREATOR = new Creator<BackEvent>() { Loading @@ -105,7 +96,6 @@ public class BackEvent implements Parcelable { dest.writeFloat(mTouchY); dest.writeFloat(mProgress); dest.writeInt(mSwipeEdge); dest.writeTypedObject(mDepartingAnimationTarget, flags); } /** Loading Loading @@ -136,16 +126,6 @@ public class BackEvent implements Parcelable { return mSwipeEdge; } /** * Returns the {@link RemoteAnimationTarget} of the top departing application window, * or {@code null} if the top window should not be moved for the current type of back * destination. */ @Nullable public RemoteAnimationTarget getDepartingAnimationTarget() { return mDepartingAnimationTarget; } @Override public String toString() { return "BackEvent{" Loading @@ -153,7 +133,6 @@ public class BackEvent implements Parcelable { + ", mTouchY=" + mTouchY + ", mProgress=" + mProgress + ", mSwipeEdge" + mSwipeEdge + ", mDepartingAnimationTarget" + mDepartingAnimationTarget + "}"; } } core/java/android/window/BackMotionEvent.aidl 0 → 100644 +22 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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; /** * @hide */ parcelable BackMotionEvent; core/java/android/window/BackMotionEvent.java 0 → 100644 +150 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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.annotation.FloatRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcelable; import android.view.RemoteAnimationTarget; /** * Object used to report back gesture progress. Holds information about a {@link BackEvent} plus * any {@link RemoteAnimationTarget} the gesture manipulates. * * @see BackEvent * @hide */ public final class BackMotionEvent implements Parcelable { private final float mTouchX; private final float mTouchY; private final float mProgress; @BackEvent.SwipeEdge private final int mSwipeEdge; @Nullable private final RemoteAnimationTarget mDepartingAnimationTarget; /** * Creates a new {@link BackMotionEvent} instance. * * @param touchX Absolute X location of the touch point of this event. * @param touchY Absolute Y location of the touch point of this event. * @param progress Value between 0 and 1 on how far along the back gesture is. * @param swipeEdge Indicates which edge the swipe starts from. * @param departingAnimationTarget The remote animation target of the departing * application window. */ public BackMotionEvent(float touchX, float touchY, float progress, @BackEvent.SwipeEdge int swipeEdge, @Nullable RemoteAnimationTarget departingAnimationTarget) { mTouchX = touchX; mTouchY = touchY; mProgress = progress; mSwipeEdge = swipeEdge; mDepartingAnimationTarget = departingAnimationTarget; } private BackMotionEvent(@NonNull Parcel in) { mTouchX = in.readFloat(); mTouchY = in.readFloat(); mProgress = in.readFloat(); mSwipeEdge = in.readInt(); mDepartingAnimationTarget = in.readTypedObject(RemoteAnimationTarget.CREATOR); } @NonNull public static final Creator<BackMotionEvent> CREATOR = new Creator<BackMotionEvent>() { @Override public BackMotionEvent createFromParcel(Parcel in) { return new BackMotionEvent(in); } @Override public BackMotionEvent[] newArray(int size) { return new BackMotionEvent[size]; } }; @Override public int describeContents() { return 0; } @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeFloat(mTouchX); dest.writeFloat(mTouchY); dest.writeFloat(mProgress); dest.writeInt(mSwipeEdge); dest.writeTypedObject(mDepartingAnimationTarget, flags); } /** * Returns the progress of a {@link BackEvent}. * * @see BackEvent#getProgress() */ @FloatRange(from = 0, to = 1) public float getProgress() { return mProgress; } /** * Returns the absolute X location of the touch point. */ public float getTouchX() { return mTouchX; } /** * Returns the absolute Y location of the touch point. */ public float getTouchY() { return mTouchY; } /** * Returns the screen edge that the swipe starts from. */ @BackEvent.SwipeEdge public int getSwipeEdge() { return mSwipeEdge; } /** * Returns the {@link RemoteAnimationTarget} of the top departing application window, * or {@code null} if the top window should not be moved for the current type of back * destination. */ @Nullable public RemoteAnimationTarget getDepartingAnimationTarget() { return mDepartingAnimationTarget; } @Override public String toString() { return "BackMotionEvent{" + "mTouchX=" + mTouchX + ", mTouchY=" + mTouchY + ", mProgress=" + mProgress + ", mSwipeEdge" + mSwipeEdge + ", mDepartingAnimationTarget" + mDepartingAnimationTarget + "}"; } } core/java/android/window/BackProgressAnimator.java +6 −7 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ public class BackProgressAnimator { private final SpringAnimation mSpring; private ProgressCallback mCallback; private float mProgress = 0; private BackEvent mLastBackEvent; private BackMotionEvent mLastBackEvent; private boolean mStarted = false; private void setProgress(float progress) { Loading Loading @@ -82,9 +82,9 @@ public class BackProgressAnimator { /** * Sets a new target position for the back progress. * * @param event the {@link BackEvent} containing the latest target progress. * @param event the {@link BackMotionEvent} containing the latest target progress. */ public void onBackProgressed(BackEvent event) { public void onBackProgressed(BackMotionEvent event) { if (!mStarted) { return; } Loading @@ -95,11 +95,11 @@ public class BackProgressAnimator { /** * Starts the back progress animation. * * @param event the {@link BackEvent} that started the gesture. * @param event the {@link BackMotionEvent} that started the gesture. * @param callback the back callback to invoke for the gesture. It will receive back progress * dispatches as the progress animation updates. */ public void onBackStarted(BackEvent event, ProgressCallback callback) { public void onBackStarted(BackMotionEvent event, ProgressCallback callback) { reset(); mLastBackEvent = event; mCallback = callback; Loading Loading @@ -129,8 +129,7 @@ public class BackProgressAnimator { } mCallback.onProgressUpdate( new BackEvent(mLastBackEvent.getTouchX(), mLastBackEvent.getTouchY(), progress / SCALE_FACTOR, mLastBackEvent.getSwipeEdge(), mLastBackEvent.getDepartingAnimationTarget())); progress / SCALE_FACTOR, mLastBackEvent.getSwipeEdge())); } } core/java/android/window/IOnBackInvokedCallback.aidl +7 −6 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ package android.window; import android.window.BackEvent; import android.window.BackMotionEvent; /** * Interface that wraps a {@link OnBackInvokedCallback} object, to be stored in window manager Loading @@ -30,18 +30,19 @@ oneway interface IOnBackInvokedCallback { * Called when a back gesture has been started, or back button has been pressed down. * Wraps {@link OnBackInvokedCallback#onBackStarted(BackEvent)}. * * @param backEvent The {@link BackEvent} containing information about the touch or button press. * @param backMotionEvent The {@link BackMotionEvent} containing information about the touch * or button press. */ void onBackStarted(in BackEvent backEvent); void onBackStarted(in BackMotionEvent backMotionEvent); /** * Called on back gesture progress. * Wraps {@link OnBackInvokedCallback#onBackProgressed(BackEvent)}. * * @param backEvent The {@link BackEvent} containing information about the latest touch point * and the progress that the back animation should seek to. * @param backMotionEvent The {@link BackMotionEvent} containing information about the latest * touch point and the progress that the back animation should seek to. */ void onBackProgressed(in BackEvent backEvent); void onBackProgressed(in BackMotionEvent backMotionEvent); /** * Called when a back gesture or back button press has been cancelled. Loading Loading
core/java/android/window/BackEvent.java +1 −22 Original line number Diff line number Diff line Loading @@ -18,10 +18,8 @@ package android.window; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcelable; import android.view.RemoteAnimationTarget; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading Loading @@ -52,8 +50,6 @@ public class BackEvent implements Parcelable { @SwipeEdge private final int mSwipeEdge; @Nullable private final RemoteAnimationTarget mDepartingAnimationTarget; /** * Creates a new {@link BackEvent} instance. Loading @@ -62,16 +58,12 @@ public class BackEvent implements Parcelable { * @param touchY Absolute Y location of the touch point of this event. * @param progress Value between 0 and 1 on how far along the back gesture is. * @param swipeEdge Indicates which edge the swipe starts from. * @param departingAnimationTarget The remote animation target of the departing application * window. */ public BackEvent(float touchX, float touchY, float progress, @SwipeEdge int swipeEdge, @Nullable RemoteAnimationTarget departingAnimationTarget) { public BackEvent(float touchX, float touchY, float progress, @SwipeEdge int swipeEdge) { mTouchX = touchX; mTouchY = touchY; mProgress = progress; mSwipeEdge = swipeEdge; mDepartingAnimationTarget = departingAnimationTarget; } private BackEvent(@NonNull Parcel in) { Loading @@ -79,7 +71,6 @@ public class BackEvent implements Parcelable { mTouchY = in.readFloat(); mProgress = in.readFloat(); mSwipeEdge = in.readInt(); mDepartingAnimationTarget = in.readTypedObject(RemoteAnimationTarget.CREATOR); } public static final Creator<BackEvent> CREATOR = new Creator<BackEvent>() { Loading @@ -105,7 +96,6 @@ public class BackEvent implements Parcelable { dest.writeFloat(mTouchY); dest.writeFloat(mProgress); dest.writeInt(mSwipeEdge); dest.writeTypedObject(mDepartingAnimationTarget, flags); } /** Loading Loading @@ -136,16 +126,6 @@ public class BackEvent implements Parcelable { return mSwipeEdge; } /** * Returns the {@link RemoteAnimationTarget} of the top departing application window, * or {@code null} if the top window should not be moved for the current type of back * destination. */ @Nullable public RemoteAnimationTarget getDepartingAnimationTarget() { return mDepartingAnimationTarget; } @Override public String toString() { return "BackEvent{" Loading @@ -153,7 +133,6 @@ public class BackEvent implements Parcelable { + ", mTouchY=" + mTouchY + ", mProgress=" + mProgress + ", mSwipeEdge" + mSwipeEdge + ", mDepartingAnimationTarget" + mDepartingAnimationTarget + "}"; } }
core/java/android/window/BackMotionEvent.aidl 0 → 100644 +22 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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; /** * @hide */ parcelable BackMotionEvent;
core/java/android/window/BackMotionEvent.java 0 → 100644 +150 −0 Original line number Diff line number Diff line /* * Copyright (C) 2022 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.annotation.FloatRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcelable; import android.view.RemoteAnimationTarget; /** * Object used to report back gesture progress. Holds information about a {@link BackEvent} plus * any {@link RemoteAnimationTarget} the gesture manipulates. * * @see BackEvent * @hide */ public final class BackMotionEvent implements Parcelable { private final float mTouchX; private final float mTouchY; private final float mProgress; @BackEvent.SwipeEdge private final int mSwipeEdge; @Nullable private final RemoteAnimationTarget mDepartingAnimationTarget; /** * Creates a new {@link BackMotionEvent} instance. * * @param touchX Absolute X location of the touch point of this event. * @param touchY Absolute Y location of the touch point of this event. * @param progress Value between 0 and 1 on how far along the back gesture is. * @param swipeEdge Indicates which edge the swipe starts from. * @param departingAnimationTarget The remote animation target of the departing * application window. */ public BackMotionEvent(float touchX, float touchY, float progress, @BackEvent.SwipeEdge int swipeEdge, @Nullable RemoteAnimationTarget departingAnimationTarget) { mTouchX = touchX; mTouchY = touchY; mProgress = progress; mSwipeEdge = swipeEdge; mDepartingAnimationTarget = departingAnimationTarget; } private BackMotionEvent(@NonNull Parcel in) { mTouchX = in.readFloat(); mTouchY = in.readFloat(); mProgress = in.readFloat(); mSwipeEdge = in.readInt(); mDepartingAnimationTarget = in.readTypedObject(RemoteAnimationTarget.CREATOR); } @NonNull public static final Creator<BackMotionEvent> CREATOR = new Creator<BackMotionEvent>() { @Override public BackMotionEvent createFromParcel(Parcel in) { return new BackMotionEvent(in); } @Override public BackMotionEvent[] newArray(int size) { return new BackMotionEvent[size]; } }; @Override public int describeContents() { return 0; } @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeFloat(mTouchX); dest.writeFloat(mTouchY); dest.writeFloat(mProgress); dest.writeInt(mSwipeEdge); dest.writeTypedObject(mDepartingAnimationTarget, flags); } /** * Returns the progress of a {@link BackEvent}. * * @see BackEvent#getProgress() */ @FloatRange(from = 0, to = 1) public float getProgress() { return mProgress; } /** * Returns the absolute X location of the touch point. */ public float getTouchX() { return mTouchX; } /** * Returns the absolute Y location of the touch point. */ public float getTouchY() { return mTouchY; } /** * Returns the screen edge that the swipe starts from. */ @BackEvent.SwipeEdge public int getSwipeEdge() { return mSwipeEdge; } /** * Returns the {@link RemoteAnimationTarget} of the top departing application window, * or {@code null} if the top window should not be moved for the current type of back * destination. */ @Nullable public RemoteAnimationTarget getDepartingAnimationTarget() { return mDepartingAnimationTarget; } @Override public String toString() { return "BackMotionEvent{" + "mTouchX=" + mTouchX + ", mTouchY=" + mTouchY + ", mProgress=" + mProgress + ", mSwipeEdge" + mSwipeEdge + ", mDepartingAnimationTarget" + mDepartingAnimationTarget + "}"; } }
core/java/android/window/BackProgressAnimator.java +6 −7 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ public class BackProgressAnimator { private final SpringAnimation mSpring; private ProgressCallback mCallback; private float mProgress = 0; private BackEvent mLastBackEvent; private BackMotionEvent mLastBackEvent; private boolean mStarted = false; private void setProgress(float progress) { Loading Loading @@ -82,9 +82,9 @@ public class BackProgressAnimator { /** * Sets a new target position for the back progress. * * @param event the {@link BackEvent} containing the latest target progress. * @param event the {@link BackMotionEvent} containing the latest target progress. */ public void onBackProgressed(BackEvent event) { public void onBackProgressed(BackMotionEvent event) { if (!mStarted) { return; } Loading @@ -95,11 +95,11 @@ public class BackProgressAnimator { /** * Starts the back progress animation. * * @param event the {@link BackEvent} that started the gesture. * @param event the {@link BackMotionEvent} that started the gesture. * @param callback the back callback to invoke for the gesture. It will receive back progress * dispatches as the progress animation updates. */ public void onBackStarted(BackEvent event, ProgressCallback callback) { public void onBackStarted(BackMotionEvent event, ProgressCallback callback) { reset(); mLastBackEvent = event; mCallback = callback; Loading Loading @@ -129,8 +129,7 @@ public class BackProgressAnimator { } mCallback.onProgressUpdate( new BackEvent(mLastBackEvent.getTouchX(), mLastBackEvent.getTouchY(), progress / SCALE_FACTOR, mLastBackEvent.getSwipeEdge(), mLastBackEvent.getDepartingAnimationTarget())); progress / SCALE_FACTOR, mLastBackEvent.getSwipeEdge())); } }
core/java/android/window/IOnBackInvokedCallback.aidl +7 −6 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ package android.window; import android.window.BackEvent; import android.window.BackMotionEvent; /** * Interface that wraps a {@link OnBackInvokedCallback} object, to be stored in window manager Loading @@ -30,18 +30,19 @@ oneway interface IOnBackInvokedCallback { * Called when a back gesture has been started, or back button has been pressed down. * Wraps {@link OnBackInvokedCallback#onBackStarted(BackEvent)}. * * @param backEvent The {@link BackEvent} containing information about the touch or button press. * @param backMotionEvent The {@link BackMotionEvent} containing information about the touch * or button press. */ void onBackStarted(in BackEvent backEvent); void onBackStarted(in BackMotionEvent backMotionEvent); /** * Called on back gesture progress. * Wraps {@link OnBackInvokedCallback#onBackProgressed(BackEvent)}. * * @param backEvent The {@link BackEvent} containing information about the latest touch point * and the progress that the back animation should seek to. * @param backMotionEvent The {@link BackMotionEvent} containing information about the latest * touch point and the progress that the back animation should seek to. */ void onBackProgressed(in BackEvent backEvent); void onBackProgressed(in BackMotionEvent backMotionEvent); /** * Called when a back gesture or back button press has been cancelled. Loading