@@ -402,6 +402,18 @@ class BrandDesignUpdateWelcomePage : OnboardingPageFragment(R.layout.content_onb
402402 }
403403 }
404404
405+ private fun sizeDuckAiIntroAnimationToTextSp () {
406+ val targetTextPx = TypedValue .applyDimension(
407+ TypedValue .COMPLEX_UNIT_SP ,
408+ DUCK_AI_INTRO_TEXT_SP ,
409+ resources.displayMetrics,
410+ )
411+ val viewHeightPx = (targetTextPx * DUCK_AI_INTRO_CANVAS_H / DUCK_AI_INTRO_TEXT_CANVAS_UNITS ).toInt()
412+ binding.duckAiIntroAnimation.updateLayoutParams {
413+ height = viewHeightPx
414+ }
415+ }
416+
405417 private fun prepareDuckAiIntroAnimation () {
406418 binding.duckAiIntroAnimation.apply {
407419 setTextDelegate(
@@ -494,6 +506,8 @@ class BrandDesignUpdateWelcomePage : OnboardingPageFragment(R.layout.content_onb
494506 ) {
495507 super .onViewCreated(view, savedInstanceState)
496508
509+ sizeDuckAiIntroAnimationToTextSp()
510+
497511 ViewGroupCompat .installCompatInsetsDispatch(binding.root)
498512 if (deviceInfo.isTablet()) {
499513 ViewCompat .setOnApplyWindowInsetsListener(binding.root) { v, windowInsets ->
@@ -2242,6 +2256,12 @@ class BrandDesignUpdateWelcomePage : OnboardingPageFragment(R.layout.content_onb
22422256 private const val GUIDELINE_START_PERCENT = 0.5f
22432257 private const val GUIDELINE_END_PERCENT = 0.39125f
22442258
2259+ // Sizes the Duck.ai intro Lottie so its baked-in text renders at DUCK_AI_INTRO_TEXT_SP.
2260+ // Derived from the JSON's font-size scale chain: 24 * 3.4 * 0.78 * 1.085 ≈ 69 canvas units at end state.
2261+ private const val DUCK_AI_INTRO_TEXT_SP = 24f
2262+ private const val DUCK_AI_INTRO_CANVAS_H = 260f
2263+ private const val DUCK_AI_INTRO_TEXT_CANVAS_UNITS = 69f
2264+
22452265 private const val TEXT_INTRO_DELAY = 400L
22462266 private const val TEXT_INTRO_OPACITY_DURATION = 400L
22472267 private const val TEXT_INTRO_TRANSLATE_DURATION = 600L
0 commit comments