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] 애니메이션 - 스프링 효과

    [Compose UI] 애니메이션 - 스프링 효과

    스프링 효과 안드로이드 애니메이션에서 제공하는 스프링은 시작과 끝 값 사이에 물리학적 값을 이용하여 애니메이션을 표현한다. 해당 애니메이션에 반영되는 값은 감쇠비와 강도이다. 감쇠비(damingRatio) : 스프링의 탄성 정도. 얼마나 빠르게 원래 상태로 돌아오는지의 정도를 나타낸다. 기본값은 Spring.DampingRatioNoBouncy 이다 강도(stiffness) : 스프링의 강도 정도. 스프링이 종료된 값으로 돌아오는 속도를 의미한다. 기본값은 Spring.StiffnessMedium 이다. Card내의 Column에 스프링 효과 적용하기 Column에 적용하는 Modifier의 animateContentSize 인자를 설정한다. spring 애니메이션을 animationSpec으로 설정하고..

    [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..

    [Material] 서체 스케일(Type Scale)

    [Material] 서체 스케일(Type Scale)

    서체 스케일은 유연하면서, 일관된 스타일을 앱에 제공하기 위해 사용할 수 있는 스타일 모음이다. Marterial에서 지원하는 해당 시스템을 사용하면 디자인과 내용을 가능한 명확하고 효율적으로 표현할 수 있다. 서체 스케일의 종류 Material 서체 시스템에서 지원하는 글꼴 스타일은 13가지이다. 해당 스타일은 앱에 맞춤설정하려는 경우에 사용한다. 서체 스케일에는 각각 의도된 응용 방법과 의미를 갖는 재사용 가능한 텍스트 카테고리가 있다. 제목(H1~6) : 제목은 화면에서 가장 큰 텍스트로, 짧고 중요한 텍스트 또는 숫자에 사용된다. 본문(Body 1~2) : 작은 텍스트 크기에 적합하기 때문에 주로 긴 글에 사용된다. 글꼴 : Android 플랫폼에서는 몇 가지 글꼴을 제공하지만 기본적으로 제공되지..

    [Compose UI] Modifier (수정자)

    Modifier는 다양한 기능을 지원하고 해당 기능으로 Compose의 UI를 변경 및 확장할 수 있다. Modifier에서 지원하는 기능은 아래와 같다. (https://developer.android.com/jetpack/compose/layout) 컴포저블의 크기, 레이아웃, 동작 및 모양 변경 접근성 라벨과 같은 정보 추가 사용자 입력 처리 요소를 클릭 가능, 스크롤 가능, 드래그 가능 또는 확대/축소 가능하게 만드는 것과 같은 높은 수준의 상호작용 추가 Modifier에서 제공하는 간단한 기능들을 빠르게 살펴볼 수 있도록 정리한다. Modifier의 함수들의 반환값은 Modifier이다. 따라서 어떤 순서로 함수를 적용하느냐에 따라 다른 효과가 적용되는 Modifier가 생성되므로 순서에 항상 ..

    [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 ..