일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 쿠링
- Python
- Hilt
- Coroutines
- 코루틴
- livedata
- Gradle
- NGINX
- 백준
- boj
- textfield
- 프로그래머스
- 암호학
- android
- relay
- TEST
- 코드포스
- MiTweet
- Compose
- architecture
- MyVoca
- Codeforces
- pandas
- Coroutine
- GitHub
- Rxjava
- AWS
- androidStudio
- Kotlin
- ProGuard
- Today
- Total
목록android (87)
이동식 저장소
(내가) 자주 실수하는 ``Icon``과 ``Image``! 어떻게 다른지 비교해 보자. Icon 주로 단색 아이콘을 보여줄 때 사용한다. Material 아이콘 또는 벡터 drawable 등을 사용할 수 있으며, 아이콘에 적절한 색깔을 tint로 입혀 사용한다. 색깔을 입히고 싶지 않다면 ``Color.Unspecified``를 사용하면 된다. @Composable fun Icon( painter: Painter, contentDescription: String?, modifier: Modifier = Modifier, tint: Color = LocalContentColor.current.copy(alpha = LocalContentAlpha.current) ) ``contentDescription`..
``Density`` 객체에는 ``Float`` 타입의 ``fontScale`` 프로퍼티가 선언되어 있다. 공식 문서에서는 다음과 같이 설명하고 있다. The logical density of the display. This is a scaling factor for the Dp unit. 시스템 설정의 ``글자 크기`` 항목이 바로 이 fontScale을 설정하는 것이다. UI에서 설정한 ``sp`` 값에 fontScale을 곱하면 실제로 UI에 보일 글씨 크기를 얻을 수 있다. 기본값은 1.0이고, 최댓값은 2.0이다. 블린더 앱에서는 ``fontScale``의 값에 따라 서로 다른 UI를 보여주었다. fontScale이 일정 값 이상이라면 기본 UI 대신 저시력 UI를 보여준다. 저시력 UI는 예쁜..
문제 학교 홈페이지가 리뉴얼되면서 일부 공지를 제대로 보여주지 못하는 문제가 있었다. 해당 문제를 해결하여 오늘 낮에 업데이트를 출시했다. 쿠링 안드로이드 팀은 업데이트를 출시한 후 일주일 정도 Firebase Crashlytics를 모니터링하는데, 업데이트가 출시된 직후부터 심각한 크래시 문제가 보고되었다. 심지어 이메일로 버그를 보고하는 사용자도 있었다. 구체적으로는 온보딩 화면에서 맨 밑의 '공지 알림 설정하기' 버튼을 누르면 앱이 죽는다. 원인 모듈화 때문에 proguard rules를 수정해야 하는데, 수정하지 않았다. Retrofit과 Proguard를 함께 사용한다면, Retrofit에서 사용하는 몇몇 클래스를 난독화로부터 보호해야 한다. 대표적으로 request, response 클래스 등..
문제 초기 문자열이 있는 ``TextField``를 다음과 같이 선언하였다. @LightPreview @Composable private fun TextFieldPreview() { var textFieldValue by remember { mutableStateOf("검색하세요") } KuringTheme { TextField( value = textFieldValue, onValueChange = { textFieldValue = it } ) } } 프리뷰를 실행해 보면, 처음부터 문자열이 있음에도 불구하고(``검색하세요``) 커서가 맨 앞에 있는 모습을 확인할 수 있다. 실제로는 문자열의 맨 끝에 와야 자연스럽다. 원인 원인을 파악하기 위해 ``TextField``의 내부 구현을 뜯어보자. 우선, ..
``Modifier.minimumInteractiveComponentSize()``를 적용하면 된다. 이 modifier는 composable의 최소 크기를 각 기기의 'clickable 요소의 최소 크기'로 지정한다. 보통 48dp×48dp이지만, 기기에 따라 다를 수도 있다. (태블릿 등?) Before & After ``Icon``에 적용해 보자. Icon( imageVector = Icons.Default.ChevronRight, contentDescription = null, tint = contentColorFor(backgroundColor = MaterialTheme.colorScheme.surface), modifier = Modifier.minimumInteractiveComponent..