diff options
author | 2023-09-26 11:22:48 +0000 | |
---|---|---|
committer | 2023-09-26 11:22:48 +0000 | |
commit | 764e00e5cfdd77e754fa42f4013b0e8d85a3229c (patch) | |
tree | a6bbbc0462f28936df15129e45f5336460c0350d /libs | |
parent | 770e17a3d1be45fc8a2412bfbf1825731261e89f (diff) | |
parent | c59dfa40e2e07702f87071a1d8ad4de5a150fa7d (diff) |
Merge "Update user aspcet ratio settings button animation" into udc-qpr-dev am: c59dfa40e2
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24846394
Change-Id: I614777f8bcbbb193af47774de6f5463882997731
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'libs')
-rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayout.java | 57 |
1 files changed, 50 insertions, 7 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayout.java index 5eeb3b650074..b141bebbe8b1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayout.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayout.java @@ -18,12 +18,16 @@ package com.android.wm.shell.compatui; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.annotation.IdRes; import android.annotation.NonNull; import android.content.Context; import android.util.AttributeSet; import android.view.View; +import android.view.animation.Interpolator; +import android.view.animation.LinearInterpolator; +import android.view.animation.PathInterpolator; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; @@ -36,14 +40,29 @@ import com.android.wm.shell.R; */ public class UserAspectRatioSettingsLayout extends LinearLayout { + private static final Interpolator LINEAR_INTERPOLATOR = new LinearInterpolator(); + + private static final Interpolator PATH_INTERPOLATOR = + new PathInterpolator(0.2f, 0f, 0f, 1f); + private static final float ALPHA_FULL_TRANSPARENT = 0f; private static final float ALPHA_FULL_OPAQUE = 1f; - private static final long VISIBILITY_ANIMATION_DURATION_MS = 50; + private static final float SCALE_START = 0.8f; + + private static final float SCALE_END = 1f; + + private static final long FADE_ANIMATION_DURATION_MS = 167; + + private static final long SCALE_ANIMATION_DURATION_MS = 300; private static final String ALPHA_PROPERTY_NAME = "alpha"; + private static final String SCALE_X_PROPERTY_NAME = "scaleX"; + + private static final String SCALE_Y_PROPERTY_NAME = "scaleY"; + private UserAspectRatioSettingsWindowManager mWindowManager; public UserAspectRatioSettingsLayout(Context context) { @@ -88,7 +107,7 @@ public class UserAspectRatioSettingsLayout extends LinearLayout { if (show) { showItem(view); } else { - view.setVisibility(visibility); + hideItem(view); } } @@ -121,16 +140,40 @@ public class UserAspectRatioSettingsLayout extends LinearLayout { } private void showItem(@NonNull View view) { - view.setVisibility(View.VISIBLE); + final AnimatorSet animatorSet = new AnimatorSet(); final ObjectAnimator fadeIn = ObjectAnimator.ofFloat(view, ALPHA_PROPERTY_NAME, ALPHA_FULL_TRANSPARENT, ALPHA_FULL_OPAQUE); - fadeIn.setDuration(VISIBILITY_ANIMATION_DURATION_MS); - fadeIn.addListener(new AnimatorListenerAdapter() { + fadeIn.setDuration(FADE_ANIMATION_DURATION_MS); + fadeIn.setInterpolator(LINEAR_INTERPOLATOR); + final ObjectAnimator scaleY = + ObjectAnimator.ofFloat(view, SCALE_Y_PROPERTY_NAME, SCALE_START, SCALE_END); + final ObjectAnimator scaleX = + ObjectAnimator.ofFloat(view, SCALE_X_PROPERTY_NAME, SCALE_START, SCALE_END); + scaleX.setDuration(SCALE_ANIMATION_DURATION_MS); + scaleX.setInterpolator(PATH_INTERPOLATOR); + scaleY.setDuration(SCALE_ANIMATION_DURATION_MS); + scaleY.setInterpolator(PATH_INTERPOLATOR); + animatorSet.addListener(new AnimatorListenerAdapter() { @Override - public void onAnimationEnd(Animator animation) { + public void onAnimationStart(Animator animation) { view.setVisibility(View.VISIBLE); } }); - fadeIn.start(); + animatorSet.playTogether(fadeIn, scaleY, scaleX); + animatorSet.start(); + } + + private void hideItem(@NonNull View view) { + final ObjectAnimator fadeOut = ObjectAnimator.ofFloat(view, ALPHA_PROPERTY_NAME, + ALPHA_FULL_OPAQUE, ALPHA_FULL_TRANSPARENT); + fadeOut.setDuration(FADE_ANIMATION_DURATION_MS); + fadeOut.setInterpolator(LINEAR_INTERPOLATOR); + fadeOut.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + view.setVisibility(View.GONE); + } + }); + fadeOut.start(); } } |