일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CollapsingToolbarLayout
- 안드로이드
- 코틀린
- onMeasure
- room
- lifecycle
- View
- DataBinding
- notification
- AppBarLayout
- Algorithm
- Behavior
- CustomView
- Android
- 알림
- sqlite
- 알고리즘
- ViewModel
- HTTP
- hilt
- kotlin
- LiveData
- Navigation
- activity
- onLayout
- recyclerview
- CoordinatorLayout
- BOJ
- Coroutine
- 백준
- Today
- Total
목록Programming (프로그래밍) (212)
개발일지

MVC MVC는 Model View Controller로 어플리케이션 구성을 크게 3가지로 나누어 관리하는 디자인 패턴입니다. Model Model은 데이터베이스에 접근하여 데이터를 변경하거나 추출하여 가공하는 역할을 합니다. class Model { fun findByQuery(query: String): String { return "Hello World : $query" } fun save(data: String) { // Do Something } } 특징 View와 Controller와 독립되어야 하며 데이터에 관련된 로직만 있어야 한다. View View는 UI를 사용자에게 표시하는 역할을 합니다. class View( private val data: String ) { init { print..
Singleton Pattern 객체를 생성할 때 생성자가 호출되고 메모리에 올라가는 등 비용이 발생한다. 만약 객체를 생성할 때 비용이 크다면 객체를 자주 생성하는 일은 시스템에 부담이 클 것이다. 싱글톤 패턴은 객체를 한번만 생성하고 생성된 객체를 재사용하면서 객체의 재생성 비용을 줄이는 디자인 패턴이다. Database를 연결하고 접근하는 객체를 예로 들어 생각하면 DB를 연결할 때 드는 비용은 매우 비싸다. 하지만 연결을 한번 하고 생성된 객체를 재사용한다면 연결 비용을 줄일 수 있을 것이다. * 인스턴스화 하는 비용을 줄일 수 있다는 장점을 가지지만, 한번 생성한 인스턴스를 반납하지 않기 때문에 무분별한 싱글톤 패턴 사용은 오히려 메모리 낭비를 일으킨다. * 싱글톤 패턴은 객체간 결합도를 높이기..

Activity와 Fragment가 생명주기를 갖는 것처럼 View도 생명주기를 갖는다. Constructor View(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0) context : 현재 테마와 리소스를 접근할 수 있도록 도와준다. 도한 동적으로 생성할 때 가장 간단한 방법이다. attrs : XML로 View를 Inflate할 때 XML로 속성을 받아오는 인터페이스다. defStyleAttr : 테마에서 기본 스타일을 지정할 수 있고, 기본 스타일에서 Attr값을 찾아와서 적용한다. defStyleRes : defStyleAttr에서 값을 찾을 수 없는 경우 defStyleRes를 사..
View가 그려지는 순서는 measure -> layout -> draw 과정을 거친다. 또한 전위순회 방식(부모를 그리고 자식을 형제순으로) 으로 그린다. Measure measure(widthMeasureSpec: Int, heightMeasureSpec: Int) View의 크기를 측정하는 과정이다. final 함수이지만 내부적으로 onMeasure를 호출하고 onMeasure를 재정의하여 사용할 수 있다. 아직 ChildView는 measure된 상태가 아니기 때문에 width, measuredWidth 는 0이 반환될 수 있다. setMeasureDimension(measuredWidth: Int, measuredHeight: Int) View의 크기를 측정한다. onMeasure에서 필수적으로..

Fragment는 Activity에서 UI 일부를 나타냅니다. 하나의 Activity에서 여러 Fragment를 사용하여 UI를 구축할 수 있으며, 여러 Activity에서 Fragment가 재사용될 수 있습니다. Fragment는 Activity처럼 사용자에게 입력을 받고 생명주기를 가집니다. 즉 Activity를 모듈화한 것으로 생각하면 됩니다. Fragment의 생명주기는 Activity 생명주기에 영향을 받습니다. (Activity가 PAUSE 상태고 들어가면 Fragment도 PAUSE 상태로 들어가고, Activity가 DESTROY되면 Fragment도 DESTROY됩니다.) Fragment는 FragmentManager로 관리되며 FragmentManager를 좀 더 간편하게 사용하기 위해..
Glide 인터넷에 있는 이미지를 쉽게 처리할 수 있는 라이브러리다. 또한 대체 이미지, 에러 처리, 캐쉬 등 다양한 기능을 지원한다. https://rkdxowhd98.tistory.com/63 Android in A..Z - Glide Glide Android에서 Image를 빠르게 불러오기 위한 라이브러리다. 기본적으로 이미지, GIF를 불러올 수 있고, 에러처리, 디스크 캐쉬등 다양한 기능을 제공한다. Glide의 원칙은 어떠한 이미지도 빠르고 rkdxowhd98.tistory.com Header Image를 Request할 때 헤더가 필요할 수도 있다. 그럴 경우 Glide에서 Header 기능을 사용하여 추가할 수 있다. CustomTarget 완료했을 때 처리할 방법을 Custom화 할 수 ..
Gson을 사용하여 Number Type을 변경할 때 Int형을 Double로 자동으로 변경하는 경우가 있다. Gson은 Number Type을 기본으로 Double로 변경하기 때문인데 TypeToken을 통해 Type을 지정해주자! Gson().fromJson(json, object : TypeToken() {}.type)
Android에서 ConstraintLayout의 Group 기능을 사용하면 쓸데없는 ViewGroup을 줄일 수 있다. ex) 한번에 여러 View의 Visible를 관리할 때 새로운 ViewGroup을 만들어서 ViewGroup하나로 관리할 수 있지만 쓸데없는 ViewGroup이 늘어나며 성능에 영향을 줄 수 있다. 하지만 ConstraintLayout의 Group 기능을 사용할 경우 Group에 Tag 또는 Id로 View를 매핑하여 쉽게 관리할 수 있다. Group기능을 제대로 사용하기 위해선 매핑되는 View들의 Id가 정의되어야 한다. id를 정의하지 않은 View는 Group의 기능을 제대로 사용할 수 없다.