Loading packages/SystemUI/src/com/android/systemui/ScreenDecorations.java +38 −8 Original line number Diff line number Diff line Loading @@ -26,8 +26,10 @@ import static com.android.systemui.tuner.TunablePadding.FLAG_END; import static com.android.systemui.tuner.TunablePadding.FLAG_START; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.annotation.Dimension; import android.annotation.NonNull; import android.app.ActivityManager; Loading Loading @@ -869,6 +871,8 @@ public class ScreenDecorations extends SystemUI implements Tunable, public static class DisplayCutoutView extends View implements DisplayManager.DisplayListener, RegionInterceptableView { private static final float HIDDEN_CAMERA_PROTECTION_SCALE = 0.5f; private final DisplayInfo mInfo = new DisplayInfo(); private final Paint mPaint = new Paint(); private final List<Rect> mBounds = new ArrayList(); Loading @@ -888,6 +892,8 @@ public class ScreenDecorations extends SystemUI implements Tunable, private int mColor = Color.BLACK; private boolean mStart; private int mRotation; private float mCameraProtectionProgress = HIDDEN_CAMERA_PROTECTION_SCALE; private ValueAnimator mCameraProtectionAnimator; public DisplayCutoutView(Context context, boolean start, Runnable visibilityChangedListener, ScreenDecorations decorations) { Loading Loading @@ -928,17 +934,18 @@ public class ScreenDecorations extends SystemUI implements Tunable, getLocationOnScreen(mLocation); canvas.translate(-mLocation[0], -mLocation[1]); if (mShowProtection && !mProtectionRect.isEmpty()) { mPaint.setColor(mColor); mPaint.setStyle(Paint.Style.FILL); mPaint.setAntiAlias(true); canvas.drawPath(mProtectionPath, mPaint); } else if (!mBoundingPath.isEmpty()) { if (!mBoundingPath.isEmpty()) { mPaint.setColor(mColor); mPaint.setStyle(Paint.Style.FILL); mPaint.setAntiAlias(true); canvas.drawPath(mBoundingPath, mPaint); } if (mCameraProtectionProgress > HIDDEN_CAMERA_PROTECTION_SCALE && !mProtectionRect.isEmpty()) { canvas.scale(mCameraProtectionProgress, mCameraProtectionProgress, mProtectionRect.centerX(), mProtectionRect.centerY()); canvas.drawPath(mProtectionPath, mPaint); } } @Override Loading Loading @@ -973,8 +980,31 @@ public class ScreenDecorations extends SystemUI implements Tunable, mShowProtection = shouldShow; updateBoundingPath(); // Delay the relayout until the end of the animation when hiding the cutout, // otherwise we'd clip it. if (mShowProtection) { requestLayout(); } if (mCameraProtectionAnimator != null) { mCameraProtectionAnimator.cancel(); } mCameraProtectionAnimator = ValueAnimator.ofFloat(mCameraProtectionProgress, mShowProtection ? 1.0f : HIDDEN_CAMERA_PROTECTION_SCALE).setDuration(750); mCameraProtectionAnimator.setInterpolator(Interpolators.DECELERATE_QUINT); mCameraProtectionAnimator.addUpdateListener(animation -> { mCameraProtectionProgress = (float) animation.getAnimatedValue(); invalidate(); }); mCameraProtectionAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { mCameraProtectionAnimator = null; if (!mShowProtection) { requestLayout(); } } }); mCameraProtectionAnimator.start(); } private boolean isStart() { Loading Loading
packages/SystemUI/src/com/android/systemui/ScreenDecorations.java +38 −8 Original line number Diff line number Diff line Loading @@ -26,8 +26,10 @@ import static com.android.systemui.tuner.TunablePadding.FLAG_END; import static com.android.systemui.tuner.TunablePadding.FLAG_START; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.annotation.Dimension; import android.annotation.NonNull; import android.app.ActivityManager; Loading Loading @@ -869,6 +871,8 @@ public class ScreenDecorations extends SystemUI implements Tunable, public static class DisplayCutoutView extends View implements DisplayManager.DisplayListener, RegionInterceptableView { private static final float HIDDEN_CAMERA_PROTECTION_SCALE = 0.5f; private final DisplayInfo mInfo = new DisplayInfo(); private final Paint mPaint = new Paint(); private final List<Rect> mBounds = new ArrayList(); Loading @@ -888,6 +892,8 @@ public class ScreenDecorations extends SystemUI implements Tunable, private int mColor = Color.BLACK; private boolean mStart; private int mRotation; private float mCameraProtectionProgress = HIDDEN_CAMERA_PROTECTION_SCALE; private ValueAnimator mCameraProtectionAnimator; public DisplayCutoutView(Context context, boolean start, Runnable visibilityChangedListener, ScreenDecorations decorations) { Loading Loading @@ -928,17 +934,18 @@ public class ScreenDecorations extends SystemUI implements Tunable, getLocationOnScreen(mLocation); canvas.translate(-mLocation[0], -mLocation[1]); if (mShowProtection && !mProtectionRect.isEmpty()) { mPaint.setColor(mColor); mPaint.setStyle(Paint.Style.FILL); mPaint.setAntiAlias(true); canvas.drawPath(mProtectionPath, mPaint); } else if (!mBoundingPath.isEmpty()) { if (!mBoundingPath.isEmpty()) { mPaint.setColor(mColor); mPaint.setStyle(Paint.Style.FILL); mPaint.setAntiAlias(true); canvas.drawPath(mBoundingPath, mPaint); } if (mCameraProtectionProgress > HIDDEN_CAMERA_PROTECTION_SCALE && !mProtectionRect.isEmpty()) { canvas.scale(mCameraProtectionProgress, mCameraProtectionProgress, mProtectionRect.centerX(), mProtectionRect.centerY()); canvas.drawPath(mProtectionPath, mPaint); } } @Override Loading Loading @@ -973,8 +980,31 @@ public class ScreenDecorations extends SystemUI implements Tunable, mShowProtection = shouldShow; updateBoundingPath(); // Delay the relayout until the end of the animation when hiding the cutout, // otherwise we'd clip it. if (mShowProtection) { requestLayout(); } if (mCameraProtectionAnimator != null) { mCameraProtectionAnimator.cancel(); } mCameraProtectionAnimator = ValueAnimator.ofFloat(mCameraProtectionProgress, mShowProtection ? 1.0f : HIDDEN_CAMERA_PROTECTION_SCALE).setDuration(750); mCameraProtectionAnimator.setInterpolator(Interpolators.DECELERATE_QUINT); mCameraProtectionAnimator.addUpdateListener(animation -> { mCameraProtectionProgress = (float) animation.getAnimatedValue(); invalidate(); }); mCameraProtectionAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { mCameraProtectionAnimator = null; if (!mShowProtection) { requestLayout(); } } }); mCameraProtectionAnimator.start(); } private boolean isStart() { Loading