본문 바로가기

전체 글

(53)
Android - Compose 1.3 PullRefresh Compose 1.3 버전에서 Pull To Refresh를 위한 기능이 추가되었다. 기존에 제공하던 accompanist의 SwipeRefresh 가 정식버전으로 넘어올 거라 생각했는데, 조금 다른 형태로 새롭게 추가되었다. 1. 차이점 새로운 컴포넌트가 있는 것이 아닌 Modifier를 사용하는 형태로 변경된다. Modifier로 바뀌면서 Indicator를 뷰에 정의하지 않으면 기본값은 없다. onPull, onRelease 상태를 사용할 수 있다. 2. 사용법 @OptIn(ExperimentalMaterialApi::class) @Composable fun NewsScreen(viewModel: NewsViewModel = hiltViewModel()) { val news = viewModel.n..
Android - Compose 1.2 바뀐 것 1. Chip과 FilterChip 드디어 기존의 Chip에 대응하는 컴포넌트가 Compose에 추가되었다. @ExperimentalMaterialApi @Composable fun Chip( onClick: () -> Unit, modifier: Modifier = Modifier, enabled: Boolean = true, interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, shape: Shape = MaterialTheme.shapes.small.copy(CornerSize(percent = 50)), border: BorderStroke? = null, colors: ChipColors = C..
Android - MovableContentOf in Compose 최근 Stable로 올라온 Compose 1.2 버전에서 movableContentOf 와 movableContentWithReceiverOf 라는 새로운 두 함수가 추가되었다. 기존에는 동일한 Content이라도 부모가 바뀌게 되면 기존의 Content 없애고 새로운 Content을 구성하는 형태로 동작하였다. 이제는 movableContentOf 을 사용하여 기존의 Content를 재구성 없이 그대로 이동시킬 수 있고, 재구성에 필요한 불필요한 비용 줄일 수 있다. 사용 방법은 mutableStateOf 와 동일하게 remember 로 감싸주면 되고 내부에 Content를 넣어주면 된다. 1. movableContentOf @Composable fun MovableContentTest() { val ..
이펙티브 코틀린 - 음..? 이펙티브 코틀린 책을 읽기 시작했는데, 읽다보니 사소하게 틀린 부분들이 눈에 계속 걸린다. 책에 에라토스테네의 체 알고리즘을 이용해서 변수 스코프에 대한 설명을 하는 부분이 있는데, 변수 스코프가 잘못지정된 케이스를 설명하면서 아래 코드를 사용하였다. val primes : Sequence = sequence { var numbers = generateSequence(2) { it + 1 } var prime : Int while (true) { prime = numbers.first() yield(prime) numbers = numbers.drop(1) .filter { it % prime != 0 } } } fun main() { println(primes.take(10).toList()) //[2..
Compose 1.1 정리 https://android-developers.googleblog.com/2022/02/jetpack-compose-11-now-stable.html Jetpack Compose 1.1 is now stable! Posted by Florina Muntenescu , Android Developer Relations Engineer Today, we’re releasing version 1.1 of Jetpack Co... android-developers.googleblog.com 1. Image vector caching 벡터 이미지에 대한 캐싱이 추가되었다. Compose 1.0 의 PainterResource 코드 val imageVector = remember(path, id) { loadVe..
compose 넣은 xml 불러오면 에러날 때 java.lang.IllegalStateException: ViewTreeLifecycleOwner not found from androidx.coordinatorlayout.widget.CoordinatorLayout{25a0d04 V.E...... ......ID 0,0-0,0 #7f090122 app:id/common_container} at androidx.compose.ui.platform.WindowRecomposer_androidKt.createLifecycleAwareViewTreeRecomposer(WindowRecomposer.android.kt:244) at androidx.compose.ui.platform.WindowRecomposer_androidKt.access$createLi..
오픈소스 라이선스 만들기 앱을 출시하기 위해선 오픈소스 라이선스를 작성해야한다. ( 앱 몇개 다운받아보니 거의 안쓰는 듯...? ) 직접 다 찾아서 타이핑하기에는 귀찮기도 하고, 뭘 써야하는지 모르겠어서 찾다보니 라이브러리가 있었다. gradle-license-plugin https://github.com/jaredsburrows/gradle-license-plugin jaredsburrows/gradle-license-plugin Gradle plugin that provides a task to generate a HTML license report of your project. - jaredsburrows/gradle-license-plugin github.com 1. 라이브러리 추가 buildscript { ... dep..
잘되던 쿼리 heroku 에서만 에러 날때 개발은 mySql 로 하고 heroku 에 올리려니 postgreSQL 를 사용하라 해서 사용했다. 그러니 멀쩡하게 돌아가던 코드가 heroku 에 올라가니 에러가 발생했다... select user.id, user.last_name, a, b, c from join where endDate = 20201231 에러 1 django.db.utils.ProgrammingError: 오류: 구문 오류, "." 부근 LINE 1: select user.id, user.last_name , result.rank, result.total_u... 아무리 봐도 user.id 라는 구문이 이상하지는 않아 보이는데 에러가 발생한다. 찾아보니 postgreSQL 에서 user 가 예약어라서 테이블로 쓸려면 "user" ..