포스팅 썸네일 이미지

학습

Android에서 ConstraintLayout은 왜 사용하는 걸까

이것은 Android가 view를 그리는 과정과 관련된 것으로, Android는 measure pass, layout pass 두 과정을 통해 UI를 설정한다. measure pass는 view가 자신의 크기를 계산하고 설정하는 과정이고, layout pass는 view가 속한 ViewGroup이 view가 측정한 값에 따라 View의 위치를 설정 하는 과정이다. 보통은 이 과정이 짧은 시간 내에 완료되지만, 런타임에 View를 추가, 삭제한다던가(대표적인 예로 RecyclerView), View의 텍스트가 변경되어 크기를 다시 측정해야 하는 경우 비교적 오래 걸린다. 하지만 이것 만으로는 ANR이 발생할만큼 문제가 되지는 않는다. 공식문서에서 추천하는 Layout ViewGroup인 Layout이 다른..

2024.03.03 게시됨

포스팅 썸네일 이미지

코딩테스트

프로그래머스 삼총사 다르게 풀어보기 with Kotlin

https://school.programmers.co.kr/learn/courses/30/lessons/131705 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 3중 For문을 이용해 Brute Force 방식으로 풀 수 있으며, 검색해보면 나오는 대다수의 코드는 그렇게 풀고 있다. 다른 방법은 없을까? Cursor 이용하기 아이디어의 시작은 이러했다. 1. number를 정렬한다. 2. 왼쪽에는 가장 작은 값, 오른쪽에는 가장 큰 값이 오므로, cursor를 이용해서 탐색할 수 있겠구나! class Solution { fun solution..

2024.03.03 게시됨

TIL

240229 TIL - 학습 방향

오늘 학습한 내용 코트카타, Leetcode Daily Problem, Dynamic Pogramming Course SOLID 원칙 개념 학습 Jetpack Compose Tutorial 1-6. Implement a real-world design Udemy 안드로이드 강의 안드로이드 구현 연습 - "MVVM 클린 아키텍처 구조에서 SharedPreferences는 UI 모듈에서 싱글톤 형태로 관리해도 될까? 혹은 Data 모듈의 Repository를 통해서만 접근하도록 막아야 할까?" 고민을 했는데, MVVM + 클린 아키텍처에 대한 학습을 좀 더 한 후 다시 생각해보기로 했다. 이러한 고민을 하게 된 이유는 Glide를 통해 이미지를 로딩하고 캐싱할 수 있는데, Presentation 모듈에서 S..

2024.02.29 게시됨

포스팅 썸네일 이미지

TIL

240228 TIL

오늘 학습한 내용 Android 구현 연습 - MVVM에서 View가 ViewModel의 함수를 호출하면서 callback 형태로 결괏값에 따라 UI를 업데이트하게 구현하면 안된다. 1. LiveData를 observing할 때, lifecycleOwner를 지정하는 이유는 무엇일까? -> View가 살아있을 때만 데이터의 변화를 수신받기 위해서다. 2. ViewModel에 callback을 넘기면 어떻게 될까? -> View의 Lifecycle과 무관하게, ViewModel이 죽지 않는한 callback이 무조건 처리된다. 3. 만약 ViewModel이 처리하는 과정에서 View가 죽었는데, callback을 처리하면 어떻게 될까? -> 앱 crash가 발생한다. 4. 따라서 View가 ViewMode..

2024.02.28 게시됨

포스팅 썸네일 이미지

학습

Android에서 View는 어떻게 그려질까? - 1

학습하게 된 이유 TextView에는 marquee라는 속성이 있다. 이것을 이용하면 텍스트가 TextView 영역을 계속 움직이도록 할 수 있다. 그런데 시작과 끝이 완전히 이어지지 않고 약간의 공백이 있는 것을 볼 수 있다. 이 공간을 늘리거나 줄이는 attribute는 TextView가 제공하지 않는다. 해당 공간을 줄일 수 있는 방법을 찾아보다가 아래 답변을 통해 TextView를 상속한 CustomView를 통해 줄일 수 있음을 알게됐다. https://stackoverflow.com/a/72749204/11722881 Android: How to remove end blank space from Textview with marquee I have created TextView with marq..

2024.02.28 게시됨

TIL

240227 TIL

오늘 학습한 내용 Kotlin In Action 4.4 남은 부분, 9-3 - JvmStatic, JvmField의 차이와 Companion Object와 의 관계에 대해 정리해봤습니다. https://dodobest.notion.site/JvmStatic-JvmField-5c0bbb1d97af4542ac64e4aa89c19e1b CS 학습 : 프로그램 실행 과정 fetch-decode-execute View가 그려지는 과정 - 원래는 Custom View를 학습하려고 했으나, 자료가 적고 이미 구현되어 있는 View들의 내부 코드를 보면서 학습하기에는 나의 역량이 부족하다. 그래서 View가 그려지는 과정을 먼저 학습해보는 것을 추천 받았고, 아래 공식 문서 내용을 단어 하나 하나 의미 하는 바를 찾아..

2024.02.27 게시됨

포스팅 썸네일 이미지

TIL

240226 TIL

오늘 학습한 내용 Kotlin In Action 4.4 일부 - 동반 객체 companion object는 일반 object 객체와 같은 객체이다. 다만, 클래스 객체 선언 없이 접근할 수 있다. - 동반 객체에는 이름을 지정할 수 있으나, 보통은 클래스를 통해 바로 접근할 수 있으므로 지정하지 않는다. 기본 이름은 Companion이다. - 최상위 함수는 클래스의 private 멤버에 접근할 수 없다. 그래서 클래스의 인스턴스와 관계없이 호출해야 하지만, 클래스 내부 정보에 접근해야 하는 함수가 필요할 때, companion object에 선언해서 사용한다. 코틀린 코루틴 7장 복습 및 나머지 부분 학습 Android 구현 배달의 민족 배너와 같이 옆으로 넘기는 UI를 RecyclerView를 이용해 ..

2024.02.26 게시됨