본문 바로가기

전체 글260

[Kotlin] Sealed Class란? Enum Class 이야기enum 은 C언어에도 존재할 만큼, 범용성이 뛰어난 녀석이다. 코틀린에도 당연하게 enum 클래스가 존재한다. 이를 활용해서 아래와 같은 동작을 구현할 수 있었다.enum class Color(val r: Int, val g: Int, val b: Int) { RED(255, 0, 0), ORANGE(255, 165, 0), YELLOW(255, 255, 0), GREEN(0, 255, 0), BLUE(0, 0, 255); fun rgb() = (r * 256 + g) * 256 + b}fun getColorName(color: Color) = when (color) { Color.RED -> "빨강" Color.ORANGE -> "주황" .. 2024. 11. 2.
[Android] Theme vs Style Theme != Stylethemes 와 styles 둘 다   아래에서 보듯이 style의 각 key는 layout 에서 설정할 수 있는 attribute들입니다. 이것들을 style 로 추출하면 여러 view 에서 쉽게 재사용할 수 있고, 유지보수도 용이합니다. UsageStyles 은 layout의 각 view 에서 사용될 수 있습니다. View 는 하나의 style만 적용합니다. - 웹에서 css 가 여러 class들을 적용할 수 있는 것과 대조됩니다. Scopeview 에 적용된 style 은 바로 그 view 에만 적용되고, 자식들에게는 적용되지 않습니다. 예를 들어 3개의 버튼을 가진 ViewGroup이 있을 때, InlineAction style을 ViewGroup에 적용하더라도 자식 버튼.. 2024. 10. 27.
[Android] View에 대하여 (2) - CustomView 만들기 커스텀 뷰 만들기커스텀뷰는 왜 필요할까?안드로이드 프레임워크에서 기본 제공되는 위젯들로는 Button, TextView, EditText, ListView, CheckBox, RadioButton, Spinner 등이 있고 레이아웃으로는 LinearLayout, FrameLayout, RelativeLayout 등이 있습니다.하지만 실제로 앱을 만들다 보면 기획자, 디자이너, 사용자(클라이언트)의 요구사항에 맞는 기능을 위의 열거한 뷰들로 만들기 어렵거나 불가능한 경우가 부지기수입니다. 예를들면, 원형 썸네일을 표현하기 위한 뷰를 만들기 위해서 ImageView를 상속할 수있고, 텍스트의 일부 내용만 보여주고 원할 때 펼쳐 모든 내용을 보여줄 수 있는 뷰를 만들기 위해서는 TextView를 상속할 수도 .. 2024. 10. 27.
[Android] View에 대하여 (1) - 기본 Overview안드로이드 앱을 개발하다 보면 일반적인 뷰로는 내가 원하는 결과를 만들 수 없는 경우가 발생합니다. 이런 경우 직접 ‘커스텀 뷰’를 만들어야 합니다. 오늘은 커스텀 뷰에 대해 정리해보겠습니다. View앱 실행 화면을 구성하는 요소의 통칭위 그림에서 최상단에 위치하고 있는 뷰는 사용자 인터페이스를 구축하고 유저의 모든 입력 이벤트를 처리하는 기본적인 클래스입니다. 스크린의 직사각형 영역을 차지하며 해당 자식 요소들과 함께 측정, 배치, 그리는 역할을 합니다. ViewGroup은 하위(자식) 뷰를 포함하고 자체 레이아웃 속성을 정의할 수 있습니다. 커스텀 뷰는 아래와 같을 때 도움이 될 수 있습니다.현재 일반적인 안드로이드 구성 요소로는 원하는 작용이나 애니메이션 또는 UI를 만들 수 없을 때.. 2024. 10. 27.
[Android] 리싸이클러뷰(RecyclerView) (3) - 성능 최적화 (DiffUtil) Android DiffUtil 이해하기DiffUtil은 리스트에 나타낼 아이템들을 old item과 new item으로 나누어 두 목록의 차이를 계산하여 업데이트되는 목록을 출력하는 유틸리티 클래스입니다. 변한 아이템을 탐지하고 알아서 notify를 해주게 되므로 개발하면서 아이템이 변하는 것을 크게 신경쓰지 않아도 됩니다.   1. 기존 사용 방식(Before DiffUtil) - notify 패밀리샘플 코드와 함께 RecyclerView.Adapter 의 list update 방법들을 알아보겠습니다. 1) NotifyDataSetChanged (with Sample Code)Sample Code [1]RecyclerView 에는 ViewHolder 를 RecyclerView 에 연결할 수 있도록 Re.. 2024. 10. 25.
[Android] 리싸이클러뷰(RecyclerView) (2) - Multiple View Type 이전 포스팅에서 RecyclerView와 기본 사용법에 대해서 알아보았습니다.onCreateViewHolder의 파라미터를 살펴보면 viewType이 있는 것을 알 수 있습니다.이러한 viewType은 무엇이고 왜 사용하게 되는 걸까요?viewType이란?viewType은 변수명 그대로 viewType에 의해 구분되어 들어오는 값을 말합니다. RecyclerView 안의 개별 View가 모두 같은 타입인 경우만 있지는 않습니다. 예를 들어, 채팅 UI를 가지는 경우를 보면 View들이 서로 다른 Layout을 가져야 합니다. 또는, RecyclerView에 header나 footer를 추가하고 싶을 때에도 View를 다르게 구성해야 합니다.이런 경우에 유용하게 되는 것이 바로 viewType입니다.vie.. 2024. 10. 24.