Android Jetpack Compose/Compose Resource

    [Compose Resource Legacy] 1. colorResource, getColor 사용해 color.xml파일에서 Color객체 만들기 : Compose의 xml파일에서 color을 로딩하는 방법

    color.xml과 Color객체 color.xml은 Jetpack Compose가 출시되기 이전 color을 정의하는 방법이었다. 하지만, Compose에서 Color객체와 Color객체를 이용한 Theming을 지원하게 되면서 코드 상에 Color 객체를 정의하는 방식이 표준이 되어, 기존 color.xml을 이용한 색상 리소스 로딩 방법을 더이상 사용하지 않게 되었다. 하지만 기존의 프로젝트들에서 모든 리소스를 한 번에 이동하기는 번거롭다. 따라서 Compose에서는 colorResource메서드와 color.xml을 이용한 Color객체 로딩 방법 또한 제공한다. 새로운 앱에서는 color.xml을 사용하지 말고 Color 객체를 사용하도록 하자. 기존 color.xml의 color를 로딩하기 위..

    [Android Compose Resource] 3. Composable에서 stringResource 메서드 이용해 strings.xml에서 문자열 로딩하기 : Compose의 getString은 어떻게 동작하는가?

    strings.xml이란? strings.xml은 문자열 key값에 대한 value값을 매핑해놓은 XML파일이다. XML파일이란 eXtensible Markup Language 의 약자로 다목적 마크업 언어이다. 안드로이드에서는 이 xml파일을 블록 내에 리소스 태그을 만드는 식으로 사용한다. 예를 들어 문자열의 경우 태그를 이용해 정의한다. 예를 들어 아래와 같은 strings.xml 파일이 있다고 해보자. 위 string.xml 파일은 아래 두가지 Key-Value 쌍을 가지고 있다. 하나는 "app_name" - "Compose" 쌍이고, 다른 하나는 "kotlin_world_blog"와 "Kotlin World Blog" 쌍이다. Key Value app_name Compose kotlin_wor..

    [Android Compose Resource] 2. Compose 의 Color 객체 살펴보기

    Compose의 Color객체 기존 안드로이드에서는 Color을 기본적으로 resource폴더의 color.xml상에 정의해놓고 사용했다. 물론 Color가 직접 객체로 설정되는 경우도 있었지만 거의 사용되지 않았다. Compose에서는 더이상 Color을 xml에 정의하지 않는다. Compose에서는 Color을 Color객체로 생성해놓고 사용한다. 자 아래에서 Compose에서 Color을 어떻게 표현하는지 살펴보자. 16진수로 표현하는 Android Compose의 Color 시스템 @Stable fun Color(color: Long): Color { return Color(value = (color.toULong() and 0xffffffffUL) shl 32) } Compose의 Color 시..

    [Android Compose Resource] 1. Android Compose에서 FontFamily 만들기. - Text에 Font 적용시키기

    FontFamily란? FontFamily란 같은 폰트의 모음으로 같은 폰트에 대해 다양한 스타일(굵기)을 포함하는 번들을 뜻한다. Compose에서 FontFamily 만들기 기존 xml 기반의 안드로에서 리소스 시스템에서는 xml에 모든 리소스를 정의했는데 FontFamily도 그 중 하나였다. 하지만, Compose에서는 Color, Shape,Theme, Type에 이어 FontFamily 리소스 또한 코드 상에서 정의하기 때문에 기존과 정의 방식이 달라졌다. 따라서 이번 글에서는 변경된 방식에 맞게 FontFamily를 정의하는 방법을 설명하고자 한다. 준비사항 Compose에서 FontFamily를 만들기 위해서는 2가지 준비사항이 필요하다. Font 다운로드 Android Project에 f..