02 작곡 - 개요

Jetpack Compose란 무엇인가요?



Flutter와 같은 Android용 최신 네이티브 선언적 UI입니다.

어떻게 작동합니까?



개념적으로 전체 화면을 처음부터 재생성한 다음 필요한 변경 사항만 적용하는 방식으로 작동합니다. 이 접근 방식은 상태 저장 보기 계층을 수동으로 업데이트하는 복잡성을 방지합니다.

Jetpack Compose로 UI를 빌드하는 방법은 무엇인가요?



데이터를 가져오고 UI 요소를 내보내는 구성 가능한 함수 세트를 정의하여 사용자 인터페이스를 빌드할 수 있습니다. 예를 들어:
문자열을 받아 인사말 메시지를 표시하는 Text 위젯을 내보내는 Greeting Composable 함수:

class MainActivity : ComponentActivity()
{
    override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)
        setContent {
            Greeting(name = "World")
        }
    }
}

@Composable
fun Greeting(name: String)
{
    Text(text = "Hello $name")
}





컴포저블 기능이란?


  • 모든 구성 가능한 기능에는 @Composable이 있어야 합니다. 이 주석은 이 기능이 데이터를 UI로 변환하기 위한 것임을 Compose 컴파일러에 알립니다.
  • 구성 가능한 함수는 앱 로직이 UI를 설명할 수 있도록 하는 매개변수를 허용할 수 있습니다.
  • 구성 가능한 함수는 다른 구성 가능한 함수를 호출하여 UI 계층 구조를 내보냅니다.
  • 이 함수는 아무 것도 반환하지 않습니다. UI를 내보내는 Compose 함수는 UI 위젯을 구성하는 대신 원하는 화면 상태를 설명하기 때문에 아무 것도 반환할 필요가 없습니다.
  • Compose의 선언적 접근 방식에서 위젯은 상대적으로 상태 비저장이며 setter 또는 getter 함수를 노출하지 않습니다. 실제로 위젯은 객체로 노출되지 않습니다. 다른 인수로 동일한 구성 가능한 함수를 호출하여 UI를 업데이트합니다.
  • 구성 가능한 함수는 XML 대신 Kotlin으로 작성되기 때문에 다른 Kotlin 코드만큼 동적일 수 있습니다. 예를 들어 사용자 목록을 환영하는 UI를 빌드한다고 가정합니다.

  • @Composable
    fun Greeting(names: List<String>)
     {
        for (name in names) 
    {
            Text("Hello $name")
        }
    }
    


    구성 가능한 함수는 매우 정교할 수 있습니다. if 문을 사용하여 특정 UI 요소를 표시할지 여부를 결정할 수 있습니다. 루프를 사용할 수 있습니다. 헬퍼 함수를 ​​호출할 수 있습니다. 기본 언어의 완전한 유연성이 있습니다. 이러한 강력함과 유연성은 Jetpack Compose의 주요 이점 중 하나입니다.

    재구성이란 무엇입니까?



    새 데이터로 구성 가능한 함수를 다시 호출합니다. 이렇게 하면 함수가 재구성됩니다. 필요한 경우 함수에서 내보낸 위젯이 새 데이터로 다시 그려집니다. Compose 프레임워크는 변경된 구성 요소만 지능적으로 재구성할 수 있습니다.

    Compose에서 프로그래밍할 때 알아야 할 사항:


  • 구성 가능한 함수는 임의의 순서로 실행할 수 있습니다.
  • 구성 가능한 함수는 병렬로 실행할 수 있습니다.
  • 재구성은 가능한 한 많은 구성 가능한 함수와 람다를 건너뜁니다.
  • 재구성은 낙관적이며 취소될 수 있습니다.
  • 구성 가능한 함수는 애니메이션의 모든 프레임만큼 자주 실행될 수 있습니다.

  • ================================================

    디스코드 서버에서 함께 하실 수 있습니다.
    https://discord.gg/TWnnBmS
    (#kotlin-and-compose) 채널에서 질문을 해주세요.

    좋은 웹페이지 즐겨찾기