Android

    [Compose] Navigation 정리 및 적용하기

    [Compose] Navigation 정리 및 적용하기

    Compose Navigation 정리 Navigation 구성요소 Navigation은 크게 3가지 구성요소로 이뤄진다. NavController: 대상(즉, 앱의 화면) 간 이동을 담당한다. NavGraph: 이동할 컴포저블 대상을 매핑을 담당 NavHost: NavGraph의 현재 대상을 표시하는 컨테이너 역할을 하는 컴포저블 NavController NavController는 Navigation 구성요소의 중심 API로, 스테이트풀(Stateful)이며 앱의 화면과 각 화면 상태를 구성하는 컴포저블의 백 스택을 추적한다. 컴포즈 환경에서 NavController는 rememberNavController()를 이용하여 가져올 수 있다. val navController = rememberNavCont..

    [Compose UI] IconButton

    [Compose UI] IconButton

    IconButton은 지정한 action을 수행하도록 할 수 있는 클릭가능한 아이콘이다. 사용자 접근성 가이드라인에 따라 IconButton의 최소 터치 아이콘 크기는 48x48dp 이다. 이 사이즈보다 작은 사이즈는 사용자 접근성을 저해한다고 판단하기에 해당 가이드라인을 준수하는 것이 좋다. 주의할 사항은 IconButton의 인자 중 하나인 content는 androidx.compose.material.icons.Icons의 아이콘을 사용하는 아이콘 이여야 한다. 만약 사용자 지정 아이콘을 사용하는 경우에는 내부 아이콘의 일반적인 크기는 24x24에가 된다. IconButton 함수 인자 onClick: () -> Unit, : 클릭 시 발생할 action modifier: Modifier = Mod..

    [Android] Fragment 커스텀 생성자? FragmentFactory?

    [Android] Fragment 커스텀 생성자? FragmentFactory?

    인자를 전달받는 Fragment 생성자 Fragment를 생성할 때 파라미터를 전달받는 생성자를 이용하여 Fragment를 만들어 본 적이 있는가? 아래 코드와 같은 방식으로 Fragment 정의 시 분명 문제가 있었을 것 이다. 아래 Fragment는 문자열을 생성자의 인자로 전달받는 Fragment이다. class TestFragment constructor ( private val testString:String ): Fragment() { ... } 이러한 방식은 아래와 같은 런타임 예외를 발생 시킬 수 있다. 분명 Fragment의 생성자가 있음에도 불구하고 생성자가 없다는 예외이다. could not find Fragment constructor 런타임 예외가 왜 발생하는가? Fragment ..

    [Material] Color System (색상 알아보기)

    [Material] Color System (색상 알아보기)

    Material 디자인 색상 시스템은 개발하는 앱에 다양한 색상 테마를 적용할 수 있다. 개발자가 가장 어려워 하는 부분이 색상 팔레트 선택과 배치 문제일 것이다. 이런 문제는 조금 쉽게 해결할 수 있도록 Material에서는 제공하고 있다. Material에서 제공하는 기능과 도구를 간단하게 정리해보고자 한다. 색상 디자인 앱 개발 사전에 디자인 색상 배치를 할 때 색상과 어디에 사용되는 색상 배치인지 정리를 할 필요가 있다. 그럴 때 사용하는 요소 이름은 다음과 같다. primary : 색상은 앱의 화면과 구성요소에서 가장 자주 표시되는 색상. secondary : 색상은 앱을 강조하고 구분하는 데 사용. surface : 색상은 카드, 시트, 메뉴와 같은 구성요소의 표면에 적용. background..

    [Compose UI] LazyColumn (스크롤 가능한 Column)

    [Compose UI] LazyColumn (스크롤 가능한 Column)

    Jetpack Compose에서는 LazyColumn 컴포저블을 사용하여 스크롤 가능한 목록을 만들 수 있다. LazyColumn과 Column의 차이점은 Compose가 한 번에 모두 로드하므로 표시할 항목이 적은 경우 Column을 사용해야 한다는 것입니다. Column은 사전 정의된 또는 고정된 개수의 컴포저블만 보유할 수 있다. 하지만 LazyColumn은 콘텐츠를 추가할 수 있어 긴 목록의 경우 특히 목록의 길이를 알 수 없을 때 유용하게 사용할 수 있다. LazyColumn는 추가 코드 없이 기본적으로 스크롤도 제공하고 있다. 특히 LazyColumn은 화면에 보여지는 컴포저블만 추가하여 보여주는 방식이기에 많은 리스트를 보여줘야 하는 경우 최적화에 사용하기 용이하다. LazyColumn 함수..

    [Compose UI] Card

    [Compose UI] Card

    Card는 단일 주제에 대한 컨텐츠를 담고 있는 Surface이다. 즉 Composable function이다. Card의 파라미터 다양한 파라미터를 활용하여 Card를 확장 및 꾸밀 수 있다. onClick - callback to be called when the card is clicked modifier - Modifier to be applied to the layout of the card. enabled - Controls the enabled state of the card. When false, this card will not be clickable shape - Defines the card's shape as well its shadow. A shadow is only display..