일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 쿠링
- MiTweet
- android
- Gradle
- pandas
- Kotlin
- TEST
- ProGuard
- Python
- Codeforces
- Hilt
- 프로그래머스
- boj
- 코드포스
- activity
- Compose
- 암호학
- textfield
- architecture
- GitHub
- Coroutines
- Rxjava
- androidStudio
- MyVoca
- 코루틴
- livedata
- relay
- 백준
- AWS
- Coroutine
- Today
- Total
목록Compose (31)
이동식 저장소
2년 전 글에서 sealed class와 enum class에 대해 간략하게 다룬 적이 있다. [Kotlin] sealed class vs. enum classKotlin을 처음 배울 때는 ``enum class``와 ``sealed class``를 혼동하곤 했다. enum을 구현할 떄 ``enum class`` 대신 ``sealed class``를 써도 되지 않나? 결론 ``sealed class``를 써도 되지만, 바람직한 사용법은 아니다thinking-face.tistory.com위 글에서는 enumerated value를 구현하기 위해 ``sealed class``를 사용할 필요가 없다는 결론을 내렸다. 사실 당연하다. ``enum class``가 멀쩡히 존재하기 때문이다. 그러나 ``enum ..
지난 5월 16일, 쿠링 2.0이 배포되었다. 내가 속한 안드로이드 팀을 비롯하여 서버, iOS, 디자인, PM 등 팀원 모두가 함께 이뤄낸 값진 성과라고 할 수 있다.10개월 가까이 2.0을 작업하면서 세 번의 계절을 보냈고, 나는 어느새 졸업... 이 글에서는 내가 속한 안드로이드 팀을 중심으로, 쿠링 2.0 작업을 되돌아보고자 한다.2.0쿠링 2.0의 핵심은 디자인 업데이트이다. 그러나 당시 안드로이드 코드는 전혀 모듈화되지 않았고, ``:app`` 모듈 안에서 참조 관계가 너무 복잡해지고 있었기 때문에 안드로이드 팀은 모듈화 작업을 함께 수행하기로 결정했다.모듈화모듈화 작업은 아래 글에서 자세히 돌아보았다. MAU 세 자릿수 서비스 모듈화한 썰 푼다이전 글에서는 쿠링을 ``DAU 세 자릿수 서비스..
Compose UI의 성능을 최적화하기 위한 몇 가지 best practice를 알아보자.복잡한 계산은 remember하기Composable은 대단히 자주 실행될 수 있다. 극단적으로는 애니메이션의 매 프레임마다 실행될 수 있다. 따라서 composable 내부에서는 되도록 복잡한 계산을 하지 않는 것이 좋다. 부득이하게 복잡한 계산을 해야 한다면, ``remember``를 활용하여 계산 결과를 오랫동안 기억해야 한다. ``remember``를 사용하면 같은 값에 대해 계산을 두 번 이상 수행하지 않는다. 예를 들어, 다음과 같이 ``LazyColumn`` 내부에서 리스트를 정렬하면 안 된다.@Composablefun ContactList( contacts: List, comparator: ..
기존에는 composable의 모든 매개변수가 ``@Stable``이어야만 skippable이었다. 그러나 이제는 unstable한 매개변수를 갖는 composable도 skippable이 될 수 있다. Compose의 성능을 대폭 개선시킬 strong skip에 대해 알아보자.Strong skip 규칙이제 모든 restartable composable은 skippable이 될 수 있다. 구체적으로는, 각 매개변수를 다음과 같이 비교한다.Unstable 매개변수는 object equality 연산자인 ``===``로 비교한 결과가 ``true``일 때 (새로 추가된 규칙)Stable 매개변수는 ``Object.equals()``로 비교한 결과가 ``true``일 때 (기존과 같음)모든 매개변수의 비교 ..
Compose에서 블러 효과를 그리는 방법은 여러 가지 있지만, 이 글에서는 ``Modifier.drawBehind``를 사용하는 방법을 소개한다. ``Modifier.drawBehind { ... }``를 사용하면 Composable의 뒤에 무언가를 그릴 수 있다. 람다 내부에서는 ``DrawScope``를 통해 Compose Canvas에 접근할 수 있다.디자인 확인쿠링에서는 CTA 버튼 위에 블러를 보여주는 경우가 있다. 주로 리스트의 내용을 자연스럽게 보여줄 때 적용한다.구현Composable 위에 하얀색과 투명으로 이루어진 사각형을 그리면 된다. 사각형의 높이는 임의로 줄 수 있으나, 여기서는 Composable 높이의 30%로 지정했다. 사각형의 너비는 물론 Composable의 너비와 같다...