본문 바로가기

분류 전체보기135

[Android] MVI 패턴은 무엇일까? 요즘은 compose를 많이 사용하는 추세이다. 필자도 compose를 많이 사용하고 있다. 필자가 지인들에게 compose와 mvi를 사용하면 좋다는 소식을 듣고 바로 mvi 공부를 시작했다. 지금 바로 mvi에 대해 알아보자. 1. mvi란? mvi 아키텍처는 mvc, mvp, mvvm와 같은 안드로이드 개발자들의 개발과 유지 보수를 편리하게 해주는 아키텍처 패턴의 일종이라 할 수 있다. mvi의 구조는 model - view - intent로 구성되며 각 layer는 서로 완전히 관심사가 분리되어 있다. sideEffects는 시간이 오래 걸리는 작업(api 통신, 백그라운드 스레드에서 처리할 로직)과 인스턴스 뷰(screen 간 이동, toast와 dialog)등을 처리한다. sideEffects.. 2023. 8. 21.
[Android, Kotlin] compose custom theme 만들기 이번 포스팅은 지난 포스팅에서 말했다시피 커스텀 테마에 대한 간단 설명과 코드를 알려주도록 하겠다. 커스텀 테마를 왜 만들어야 하는지 궁금한 사람들이 있을 것 같아 간단히 설명하자면 대형 프로젝트를 하다 보면 color가 다양해질 수 있기에 기본적으로 android studio에서 제공하는 color palette가 부족할 수 있다. 그리고 디자이너가 정한 color명을 그대로 적용하기 힘들기 때문이다. 이럴 때에는 custom theme를 만드는 것을 고려해 볼 수 있다. 그래서 필자는 이번 대형 프로젝트에 대비해 커스텀 테마를 제작해 보기로 했다. 자 그럼 이제 코드로 필자가 custom theme를 만들었던 과정을 확인해 보자. 시작하기 전에! 첫 번째 단계는 theme 상태를 확인할 수 있는 en.. 2023. 8. 18.
[Android, Kotlin] compose로 custom checkbox 만들기 이번에 design system을 만드는 작업을 하고 있었는데 checkbox를 만들어야 할 일이 있었다. 이번에 필자 같은 경우 말고도 다른 프로젝트를 할 때에도 checkbox를 사용해야 할 일이 있을 것이다. 하지만 기본 checkbox의 모양으로는 만족스럽지 못한 경우도 있을 것이다. 그래서 이번에 필자는 custom checkbox를 만들어 보았다. 필자가 checkbox를 어떻게 만들었는지 코드를 통해 확인해 보자. 1. custom checkbox를 만들기 위한 준비물(?) 일단 처음 만들 때 필자는 custom dialog를 만들기 위해 무엇이 필요한지 생각해 보았다. 그래서 하나의 결론에 도달했다! check 되었을 때의 checkbox layout, check 되지 않았을 때의 chec.. 2023. 8. 18.
[Android, Kotlin] compose로 tablayout 구현하기 이번에 youtube open api를 다루면서 xml에서 사용했던 tablayout을 적용하고 싶어서 이번 포스팅에서는 compose tablayout 기능을 구현해 보도록 하겠다. compose에서 tablayout 기능을 구현할 수 있게 해주는 composable function은 tabRow이다. tabrow는 list를 이용해 화면(tab) 간의 이동을 가능하게 해주는 기능으로 bottom navigation과 비슷하다. 이번에 tabrow를 사용해 보았는데 기존에 xml에서는 screen마다 fragment를 필수적으로 생성해서 연결해야 했었는데, compose에서는 따로 screen을 만들지 말지 개발자가 정할 수 있어서 편했던 것 같다. 이번 기회에 필자는 screen을 생성하지 않은 ta.. 2023. 8. 15.
[Android, Kotlin] compose navigation에서 data class tpye 넘기기 compose에서 navigation을 사용할 때, 화면 전환 시 변환될 화면에 기존의 화면의 데이터를 이용하고 싶은 경우가 있을 것이다. 그럴 때에는 Navcontroller.navigate()에다가 넘길 데이터를 param으로 넣은 다음에 NavHost에서 composable()로 navigate logic을 작성하면 됐었다. navigation 중 데이터 전달에 관한 자세한 설명은 아래 포스팅을 참고하면 좋을 듯하다. https://rkdrkd-history.tistory.com/51 [Android, Kotlin] Compose UI 정리(7) 이전 포스팅 https://rkdrkd-history.tistory.com/50 [Android, Kotlin] Compose UI 정리(6) 이번 포스팅.. 2023. 8. 11.
[Android, Kotlin] compose에서 api 통신하기 이전 포스팅의 연장선입니다. https://rkdrkd-history.tistory.com/55 [Android, Kotlin] Android clean architecture 프로젝트에서 api 에러 핸들링하기 clean architecture 프로젝트를 구상하고 개발하다 보면 api error 처리를 어떻게 하고 있는가? 예전의 필자는 그냥 무지성으로(?) presentation layer에 try catch를 이용해 처리를 했었었다. 하지만 그 방법을 rkdrkd-history.tistory.com 이전 포스팅에서 clean architecture 관점에서 api error handling 방법을 공부해 봤는데, 이번 글에서는 지난 글의 연장선인 clean architecture 관점에서 compo.. 2023. 8. 3.
[Android, Kotlin] Android clean architecture 프로젝트에서 api 에러 핸들링하기 clean architecture 프로젝트를 구상하고 개발하다 보면 api error 처리를 어떻게 하고 있는가? 예전의 필자는 그냥 무지성으로(?) presentation layer에 try catch를 이용해 처리를 했었었다. 하지만 그 방법을 사용했을 때, 일일이 try catch문을 작성해야 하는 불편함과 presentation layer에서만 처리하는 것이 맞나 이런 의문들이 들기 시작했다. 그래서 이번 포스팅에서 clean architecture project에서 api error handling logic을 작성하는 방법을 공부하고 적어보았다. 1. error handling 로직은 어떤 layer에 작성되어야 하는가?? 필자는 data layer에서 http status code에 따른 예.. 2023. 8. 1.
[Kotlin, Ktor] ktor를 데이터베이스에 연동하기 - 1(3) 지난 포스팅 https://rkdrkd-history.tistory.com/53 [Kotlin, Ktor] ktor로 http api 만들기(2) 지난 포스팅 https://rkdrkd-history.tistory.com/52 [Kotlin, Ktor] ktor 프로젝트 시작하기(1) 친구들이랑 함께 하는 프로젝트에서 서버 부분을 ktor로 바기로 결정 났다. 처음 들어본 ktor이지만, 검색을 좀 해보 rkdrkd-history.tistory.com 지난 포스팅에서는 ktor에서 http api를 만들어보는 것을 했다. 이번 포스팅에서는 ktor에 database를 사용해 data를 저장해 보겠다. 코드는 지난 포스팅을 바탕으로 재공 할 것이니 이전 글을 보고 오는 것을 추천한다. 데이터베이스 라이브러.. 2023. 6. 15.
[Kotlin, Ktor] ktor로 http api 만들기(2) 지난 포스팅 https://rkdrkd-history.tistory.com/52 [Kotlin, Ktor] ktor 프로젝트 시작하기(1) 친구들이랑 함께 하는 프로젝트에서 서버 부분을 ktor로 바기로 결정 났다. 처음 들어본 ktor이지만, 검색을 좀 해보니까 kotlin으로 만들 수 있는 서버라더라 이번 기회에 공부해 보면서 ktor에 대해 rkdrkd-history.tistory.com 지난 포스팅에서 ktor project를 생성하는 방법을 알아보았다. 이번 포스팅에서는 ktor로 HTTP api를 만들어 보겠다. ktor 서버 실행하기 일단 ktor서버를 실행시켜 보자. ktor project를 만들면 기본으로 나오는 샘플 코드가 있다(처음에 만들 때 설정으로 샘플 코드 생성을 안 하게 할 수.. 2023. 6. 14.
[Kotlin, Ktor] ktor 프로젝트 시작하기(1) 친구들이랑 함께 하는 프로젝트에서 서버 부분을 ktor로 바기로 결정 났다. 처음 들어본 ktor이지만, 검색을 좀 해보니까 kotlin으로 만들 수 있는 서버라더라 이번 기회에 공부해 보면서 ktor에 대해 알게 된 것들을 블로그에 남겨보려 한다. 서론이 길었으니 바로 시작하도록 하자. Ktor?? ktor는 kotlin으로 만들어진 비동기 웹 애플리케이션 프레임워크이다.ktor로 api 요청을 만들어서 android retrofit과 사용하는 것이 나의 목표이다. 이번 포스팅에서는 ktor 프로젝트 만들기만 해 보겠다.이 이후의 개념들의 필자가 공부해서 추후에 새로 포스팅을 올려보겠다. https://ktor.io/ Ktor: Build Asynchronous Servers and Clients in.. 2023. 6. 12.
[Android, Kotlin] Compose UI 정리(7) 이전 포스팅 https://rkdrkd-history.tistory.com/50 [Android, Kotlin] Compose UI 정리(6) 이번 포스팅에서는 compose ui로 bottom navigation을 만드는 예제를 정리해 볼 것이다. 이전 포스팅 https://rkdrkd-history.tistory.com/46 [Android, Kotlin] Compose UI 기록(5) 이번 포스팅에서는 compose UI 공부했던 내용 rkdrkd-history.tistory.com 이번 포스팅에서는 필자가 compose를 사용하다가 알게 된 정보를 끄적여보겠다. 이번에 알게 된 정보는 제목 보면 알 수 있듯이 화면전환(navigate) 도중 데이터를 전달하는 방법을 알아보도록 하겠다. (compo.. 2023. 4. 16.
[Android, Kotlin] Compose UI 정리(6) 이번 포스팅에서는 compose ui로 bottom navigation을 만드는 예제를 정리해 볼 것이다. 이전 포스팅 https://rkdrkd-history.tistory.com/46 [Android, Kotlin] Compose UI 기록(5) 이번 포스팅에서는 compose UI 공부했던 내용을 끄적여보겠다. 이전 포스팅 https://rkdrkd-history.tistory.com/44 [Android, Kotlin] Compose UI 정리(4) 지난 포스팅 https://rkdrkd-history.tistory.com/43 [Android, Kotlin] Compose U rkdrkd-history.tistory.com compose로 bottom navigation을 만드는 방법은 여러 가.. 2023. 4. 7.
[Android, Kotlin] open api 사용 중 발생한 java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.collections.CollectionsKt__IterablesKt.collectionSizeOrDefault, parameter <this> 해결 공공데이터포털 api를 호출하는 공부를 하다가 또(오)류를 만났다. 오류의 내용을 보면 java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.collections.CollectionsKt__IterablesKt.collectionSizeOrDefault, parameter 대충 어떤 메서드의 값이 null이라는 오류 같았는데 httplogginginterceptor에서는 api 결과가 잘 나왔었다... 아무튼 필자가 오류를 해결한 방법은 필자는 api를 받아올 data class에다가 @SerializedName을 써서 api에서 받아올 필드를 정의해 줬었는데 data class Body( @Serial.. 2023. 3. 21.
[Android, Kotlin] Android MVVM 다뤄보기 이번에 필자가 공부해본 것은 MVVM이다. MVVM은 View - Model - ViewModel의 약자인건 다 알고 있는 사실이니 그냥 넘기고(?) 필자는 오래전부터 사용해왔던 안드로이드 아키텍처이지만 쓰는 이유와 각 파일들이 정확히 무엇을 위한 파일들인지 잘 알지 못했기에 이번 기회에 제데로 알아보고자 한다. 1. MVVM의 구조 MVVM은 이름에서도 알 수 있듯이 View, Model, ViewModel로 이루어져 있다. View: 이벤트 발생, liveData 감지해 뷰에 출력한다(출력싸개). Model: 실직적인 데이터를 다루는 곳(DB, Api 등의 데이터를 정의(?)한다.) ViewModel: 프로젝트의 비즈니스 로직을 관리한다(Api 호출, DB호출 이런거). 주의할 점은 View와 Mod.. 2023. 3. 18.
[Android, Kotlin] Android Activity의 lifeCycle 정리 안드로이드로 개발을 하다 보면 activity, fragment의 상태에 따른 로직을 수행해야 할 때가 있다. 그때 사용할 수 있는 것이 life cycle 함수들인데 이번 포스팅에서는 그것들을 알아보도록 하자. life cycle이란? activity, fragment가 태어나서(시작되다) 죽는(종료되다) 순간까지의 주기를 뜻한다. 1. Activity의 생명주기(lifeCycle) 먼저 activity의 생명주기를 할아볼 건데, activity의 생명주기로는 onCreate() onStart() onResume() onPause() onStop() onDestroy() onRestart() 총 7가지가 있으며, 각 함수들은 activity의 상태에 따라 호출이 된다. 그리고 모든 함수를 꼭 다 구현할.. 2023. 3. 17.
728x90