Jetpack Compose + WindowInsets = π€© π₯³
Jetpack Compose μμ WindowInsets μ¬μ©νκΈ°
μ¬ν΄ μ΄μ ν€λ³΄λμ μ λλ©μ΄μ μ μ μ©νλ κ²μΌλ‘ WindowInsets μ λν΄ λ€λ£¬μ μ΄ μμ΅λλ€.
XML μμ WindowInsets μ μ¬μ©νκΈ° μν΄μ λ€ μ½λ°±μΌλ‘ ꡬνν΄μΌ νμ΅λλ€. νμ§λ§ Jetpack Compose λ₯Ό μ΄μ©νλ©΄ λλΆλΆμ WindowInsets λ€μ λ€ Modifier λ‘ μ¬μ©ν μ μμ΄μ μμ£Ό μ½κ² WindowInsets μ μ¬μ©ν μ μμ΅λλ€. μ΄ κΈμμλ Jetpack Compose μμ WindowInsets μ¬μ©μ λν΄ λ€λ€ λ³΄κ² μ΅λλ€.
WindowInsets μ κ°λ μ λν΄μ λ€λ£¨μ§ μμ΅λλ€. WindowInsets μ΄ μ²μμ΄μ λΆμ μ¬ν΄ μ΄μ μ¬λΌμ¨ κ²μκΈμ λ¨Όμ μ°Έκ³ ν΄ μ£ΌμΈμ.
λ¨Όμ DecorFitsSystemWindows μ false λ‘ Insets μ μ¬μ©ν μ€λΉλ₯Ό ν΄μ£Όκ² μ΅λλ€.
IME Insets μ μ¬μ©νκΈ° μν΄μ μ‘ν°λΉν°λ₯Ό adjustResize λ‘ ν΄μΌ νκ³ , μ μμμ μ‘ν°λΉν°λ adjustResize λ‘ μ€μ λΌ μμ΅λλ€.
μμλλ‘ WindowInsets μ΄ μ μ©λμ§ μμκΈ°μ λ€λΉκ²μ΄μ λ°μ λ²νΌμ΄ κ°λ €μ§κ³ , ν€λ³΄λκ° μ¬λΌκ°μ λ ν€λ³΄λμ μ»΄ν¬λνΈλ€μ΄ κ°λ €μ§κ² λ©λλ€.
μνλ°μ λ€λΉκ²μ΄μ λ° λ§νΌ ν¨λ©μ μ μ©ν΄ λ³΄κ² μ΅λλ€.
XML μ λΉν΄ λ§€μ° κ°λ¨νκ² Modifier.windowInsetsPadding μ μ΄μ©ν΄ κ°λ₯ν©λλ€. Jetpack Compose μμ WindowInsets μ Insets μ΄ ν λ² μ¬μ©λλ©΄ μΆν μ€λ³΅ μ μ©μ λ°©μΉνκΈ° μν΄ μλμΌλ‘ ν΄λΉ Insets μ΄ consume λ©λλ€. λ°λΌμ μ¬μ©νμ§ μμ Insets λ€μ μ μΈμμΌμ μ¬μ©ν Insets λ§ consume μν€λκ² κΆμ₯λ©λλ€. μ΄λ₯Ό μν΄ systemBars Insets λ₯Ό κ°μ Έμ€κ³ , only νμ₯ ν¨μλ₯Ό μ΄μ©νμ¬ μνλ°μ λ€λΉκ²μ΄μ λ°κ° μ‘΄μ¬νλ Vertical λΆλΆλ§ μ¬μ©νκ² λ€κ³ μ μνμμ΅λλ€. μ΄ κ²°κ³Όλ‘ μλ μμμ²λΌ μ»΄ν¬λνΈλ€μ΄ λ€λΉκ²μ΄μ λ° ν¬κΈ°λ§νΌ ν¨λ©λμ λ€ λ³΄μ΄κ² λ©λλ€.
νμ§λ§ μ¬μ ν ν€λ³΄λκ° μ¬λΌμ€λ©΄ ν€λ³΄λμ μν΄ μ»΄ν¬λνΈλ€μ΄ λ€ κ°λ €μ§λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ IME Insets ν¨λ©μ μ μ©ν΄ μ£Όκ² μ΅λλ€. μ΄λ²μλ μμ£Ό κ°λ¨νκ² Modifier.imePadding() μ μ΄μ©ν΄ κ°λ₯ν©λλ€.
ν€λ³΄λ μ λλ©μ΄μ μ΄ μ μ©λ κ±Έ νμΈν μ μμ΅λλ€. XML μ λΉν΄ μμ£Ό μ¬μμ‘μ΅λλ€. (μ΄λ° νΈλ¦¬ν¨μ μ λ§ λ릴 μ μμ΄μ μ΄ κΈμ μμ±νκ² λμ΅λλ€.)
Insets μ λ°λ‘ ν¨λ©μΌλ‘ μ μ©μν€λκ² μλ μ¬μ΄μ¦λ§ λ¨λ μΌλ‘ μ»μ΄μ¬ μλ μμ΅λλ€.
Insets κ°μ ν½μ (Int) κ°μΌλ‘ λ°μμ¬ μ μμ΅λλ€. νμ§λ§ μ»΄ν¬μ¦μμλ Dp λ¨μλ₯Ό μμ£Ό μ¬μ©ν¨μΌλ‘ μ λ toDp() λ₯Ό ν΅ν΄ Dp λ‘ λ³κ²½ν΄μ μ¬μ©νκ³ μμ΅λλ€.
μ¬κΈ°κΉμ§κ° μ£Όλ‘ μ¬μ©λλ WindowInsets λ€ μ λλ€. μ΄ λ°μλ μμ€ν μ μ€μ²λ₯Ό λΉνμ±ν νλ Modifier.systemGestureExclusion() μ κ°μ΄ ν¨μ¬ λ§μ WindowInsets λ€μ΄ ꡬνλΌ μμ΅λλ€. μμΈν λ΄μ©μ 곡μ λ¬Έμλ₯Ό νμΈν΄ μ£ΌμΈμ.
ν κ°μ§ μμ¬μ΄ μ μ λͺ¨λ WindowInsets λ€μ΄ Jetpack Compose λ‘ μ 곡λμ§ μμ΅λλ€. νμ¬ μ΄ κΈμ μμ±νλ μμ κΈ°μ€μΌλ‘ isVisible, animationInProgress, animationFraction, layoutInsets/animatedInsets μ΄λ κ² 4κ°μ§μ Insets μ μ 곡λμ§ μμ΅λλ€. [κ΄λ ¨ μ΄μ: 217770337]
λ!
μλ μ΄ κΈ°λ₯μ accompanist λ₯Ό ν΅ν΄ μ 곡λκ³ μμμ§λ§, μ»΄ν¬μ¦μ foundation μ WindowInsets μ κ³΅μ΄ μΆκ°λλ©΄μ κΈ°μ‘΄ accompanist λ deprecated λμμ΅λλ€. Jetpack Compose λ μ¬λ¬λͺ¨λ‘ μ λ§ νΈλ¦¬νκ±° κ°μ΅λλ€.
μλλ‘μ΄λ κ°λ°μ λΆλ€μ μν μΉ΄μΉ΄μ€ν‘ μ€ν μ±ν λ°©μ μ΄μνκ³ μμ΅λλ€.