본문 바로가기
반응형

안드로이드/코틀린30

(android-jetpack)AAC에서의 뷰모델 안드로이드에서 제공하는 안드로이드 아키텍쳐 컴포넌트(Android Architecture Component)의 ViewModel에 대해서 이야기하려고 합니다. 기존 MVVM 모델의 뷰 모델과 동일한 기능을 가진 존재였다면, 그저 디자인 패턴 설명 시에 했던 모델로서 설명이 끝이겠지만, MVVM 모델을 설명하면서 했던 ViewModel과는 분명 다른 존재라고 안드로이드 공식 문서에서도 분명하게 설명하고 있습니다. 위와 같은 말이 안드로이드의 MVVM 디자인 패턴을 공부하는 과정에서 제일 많이 들을 수 있고, AAC나 jetpack에 대해 공부하는 과정에서 제일 알기 쉬운 주제입니다. 그러나 글을 쓰는 이유는 안드로이드 프로젝트에 MVVM 모델을 채용하면서 동시에 버전 업을 위해 AAC를 채용하게 되었더니 .. 2021. 3. 30.
(android - jetpack)데이터 바인딩 작업 안드로이드의 jetpack 라이브러리가 등장하면서 dataBinding이라는 기술이 안드로이드에도 도입되기 시작했습니다. dataBinding의 개념은 이미 예전부터 버터 나이프 라이브러리와 같은 개념으로 많이 알려져 있었습니다. 하지만 jetpack을 통해 공식적으로 도입된 느낌이 강합니다.(물론 아직까지도 버터 나이프와 같은 데이터바인딩 라이브러리를 사용할 수 있습니다.) 데이터바인딩은 XML과 기존 코틀린(자바) 코드와의 연결을 기초로 합니다. 이는 특별한 연결 설정 없이 데이터 바인딩을 통해 변수의 변경에 따라 뷰를 변경해줄 수 있다는 것을 의미합니다. 이로 인해 더욱 간단하게 view와 관련된 기능과 다른 기능들을 분리할 수 있도록 도와줍니다.(여러가지 디자인 패턴을 적용하기 더욱 좋아진다는 것.. 2021. 3. 22.
(android) 스플래시 화면 만들기 스플래시 화면이란 어플리케이션을 실행할 때 보여주는 로딩 화면을 의미합니다. 처음 스플래시 화면을 도입하게 된 계기는 애플리케이션 구동시 처리해줘야 할 사항이 많은데(버전체크, 기본 데이터 로딩, 서버에 접속 등) 그 일들이 처리되는 동안 제대로 구성되지 않은 화면을 사용자들이 보고 있는 경우 애플리케이션의 완성도가 떨어진다고 판단되어 생겨난 디자인이라고 합니다. 또한 앱을 켤 때 꾸준히 노출되는 디자인이기 때문에 앱 브랜드를 홍보하기 위한 창구로 활용되고 있기도 합니다. 그래서 스플래시 화면은 내부적인 기능이라기 보다는 디자인 적인 측면이 강합니다. 하지만 대부분의 애플리케이션이 스플래시 화면을 통해 앱의 완성도를 올리고 있는 추세라 사용법을 알아두는 것이 좋습니다.(물론 스플래시 스크린 자체의 기능은.. 2021. 3. 11.
Kotlin으로 만든 커스텀 버튼 많은 블로그를 보면 커스텀 버튼에 대한 이야기가 많습니다. 그러나 xml로 디자인 정도만 바꾼 기초적인 버튼이 대다수를 차지하고 있습니다. 그 부분은 매우 중요한 부분이 맞으나 아쉽게도 제가 원하는 부분은 코틀린 class를 통해 button을 상속받아 만든 버튼 클래스 였기 때문에 이 글에서는 그 부분을 소개하도록 하겠습니다. 먼저 제가 만든 버튼은 실제로 사용해야하는 버튼이라 여러 기능이 있지만 그 것을 가지고 와서 소개하기에는 조금 부담스러울 수 있기 때문에 간략하게 소개하기 위해 check 기능이 추가된 커스텀 버튼을 소개하겠습니다. class CheckButton @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, .. 2021. 2. 9.
Gson과 JSON의 toString 회사에서 Json을 Gson으로 변경하는 작업을 시작한다고 합니다. 그래서 아무 생각 없이 JSONObject를 JsonObject로 바꾸는데 기본적으로 Json과 Gson에 대한 이해도가 부족하다는 것을 깨닫게 되었습니다. 솔직히 두 개의 차이점을 모르고 그냥 변경하고 있었을 때는 몰랐습니다. 이 두 개의 차이가 현저하다는 사실을요! 그러나 문제는 아래 부분의 코드에서 발생했습니다. nurl += "$t=${URLEncoder.encode(u.toString(), "utf-8")}&" 이 코드에서 u는 현재 JsonElement입니다. 하지만 원래 JSONObject를 사용할 때에는 아무런 문제도 없었죠. 하지만 이것을 Gson을 쓰기 위해 변경한 후에 자세히 보니 타입이 JsonElement로 변경되.. 2021. 1. 23.
디버깅과 릴리즈, 그리고 proguard 요즘 회사에서 코틀린으로 어플을 만들고 있는데(정확히 말하면 수정이지만), 디버깅 모드로 테스트하던 어플이 릴리즈 모드를 통해 다른 회사 사람들에게 테스트용으로 전달했더니 여러가지 기능들이 먹히지 않는 문제를 발견했습니다. 기본적으로 이것저것 검색해본 결과로는 디버그 모드가 릴리즈 모드보다 디버깅 관련 데이터를 포함하면서 실행이 되기 때문에 속도 차이가 현저하다는 얘기들이 있습니다. 실제로 제가 안드로이드 apk 파일을 만들었을 때, 디버깅 모드는 11Mb, 릴리즈 모드는 8Mb 정도로 데이터 크기부터 차이가 나는 것을 확인했습니다. 속도나 다른 부분에서는 큰 용량의 데이터를 주고 받지 않는다면 크게 체감할 수 없지만, 휴대폰의 사양을 낮췄을 때는 휴대폰이 데이터를 받지 못해 프로그램을 꺼버리는 등의 문.. 2020. 9. 3.
728x90