Skip to content

Commit

Permalink
[Predictive Back][Side Sheets] Fix subtle detached side sheet glitch …
Browse files Browse the repository at this point in the history
…where after predictive back the sheet does not fully slide off screen

PiperOrigin-RevId: 527577382
  • Loading branch information
dsn5ft authored and leticiarossi committed Apr 27, 2023
1 parent d8c5c2c commit 52f1737
Showing 1 changed file with 12 additions and 1 deletion.
Expand Up @@ -30,6 +30,8 @@
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.MarginLayoutParams;
import android.window.BackEvent;
import androidx.annotation.GravityInt;
import androidx.annotation.NonNull;
Expand Down Expand Up @@ -130,7 +132,7 @@ public void finishBackProgress(
@Nullable AnimatorUpdateListener finishAnimatorUpdateListener) {
boolean leftSwipeEdge = backEvent.getSwipeEdge() == BackEvent.EDGE_LEFT;
boolean leftGravity = checkAbsoluteGravity(gravity, Gravity.LEFT);
float scaledWidth = view.getWidth() * view.getScaleX();
float scaledWidth = view.getWidth() * view.getScaleX() + getEdgeMargin(leftGravity);
ObjectAnimator finishAnimator =
ObjectAnimator.ofFloat(view, View.TRANSLATION_X, leftGravity ? -scaledWidth : scaledWidth);
if (finishAnimatorUpdateListener != null) {
Expand Down Expand Up @@ -179,4 +181,13 @@ private boolean checkAbsoluteGravity(@GravityInt int gravity, @GravityInt int ch
GravityCompat.getAbsoluteGravity(gravity, ViewCompat.getLayoutDirection(view));
return (absoluteGravity & checkFor) == checkFor;
}

private int getEdgeMargin(boolean leftGravity) {
LayoutParams layoutParams = view.getLayoutParams();
if (layoutParams instanceof MarginLayoutParams) {
MarginLayoutParams marginLayoutParams = (MarginLayoutParams) layoutParams;
return leftGravity ? marginLayoutParams.leftMargin : marginLayoutParams.rightMargin;
}
return 0;
}
}

0 comments on commit 52f1737

Please sign in to comment.