Merge "Scale the gesture tutorial animation to work on smaller devices" into udc-dev am: cb5e2cfd3e

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/23632910

Change-Id: Iad90f231e391346aa4a3ea691c455aad3752c012
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Saumya Prakash
2023-06-13 06:07:39 +00:00
committed by Automerger Merge Worker
2 changed files with 23 additions and 1 deletions

View File

@@ -124,7 +124,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:scaleType="centerCrop"
android:scaleType="matrix"
app:lottie_loop="true" />
</RelativeLayout>

View File

@@ -30,6 +30,7 @@ import android.annotation.RawRes;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Outline;
import android.graphics.Rect;
import android.graphics.drawable.AnimatedVectorDrawable;
@@ -67,6 +68,7 @@ import com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureAttem
import com.android.systemui.shared.system.QuickStepContract;
import com.airbnb.lottie.LottieAnimationView;
import com.airbnb.lottie.LottieComposition;
import java.util.ArrayList;
@@ -175,6 +177,8 @@ abstract class TutorialController implements BackGestureAttemptCallback,
mExitingAppStartingCornerRadius = QuickStepContract.getWindowCornerRadius(mContext);
mExitingAppEndingCornerRadius = mContext.getResources().getDimensionPixelSize(
R.dimen.gesture_tutorial_back_gesture_end_corner_radius);
mAnimatedGestureDemonstration.addLottieOnCompositionLoadedListener(
this::createScalingMatrix);
mFeedbackTitleView.setText(getIntroductionTitle());
mFeedbackSubtitleView.setText(getIntroductionSubtitle());
@@ -214,6 +218,24 @@ abstract class TutorialController implements BackGestureAttemptCallback,
};
}
/** Scale the Lottie gesture animation to fit the device based on device dimensions */
private void createScalingMatrix(LottieComposition composition) {
Rect animationBoundsRect = composition.getBounds();
if (animationBoundsRect == null) {
mAnimatedGestureDemonstration.setScaleType(ImageView.ScaleType.CENTER_CROP);
return;
}
Matrix scaleMatrix = new Matrix();
float pivotX = mScreenWidth / 2f;
float pivotY = mScreenHeight;
float scaleFactor = mScreenWidth / animationBoundsRect.width();
scaleMatrix.postScale(scaleFactor, scaleFactor, pivotX, pivotY);
scaleMatrix.postTranslate(0,
mTutorialFragment.getDeviceProfile().heightPx - animationBoundsRect.height());
mAnimatedGestureDemonstration.setImageMatrix(scaleMatrix);
}
private void showSkipTutorialDialog() {
if (mSkipTutorialDialog != null) {
mSkipTutorialDialog.show();