📱 Android 61

[Android] SOLID 원칙

설계원칙으로 유명한 SOLID 원칙에 대해 하나씩 알아보겠습니다 단일 책임 원칙 (Single Responsibility Principle) • 어떤 클래스나 모듈 , 메서드가 하나의 기능을 가져야 한다는 의미 • 모든 클래스는 단 하나의 책임만 가짐 -> 변경사항 발생 시 그 변경사항에 책임이 있는 부분만 수정 ex) A 모듈 : 특정 데이터를 분석 , 서버에 전송 A 모듈은 2가지 이유로 변경될 수 있다 1. 특정 데이터 분석 알고리즘 변경 2. 서버에 전송하는 형식 변경 실제로는 분리된 책임이며, 따라서 분리된 클래스 모듈로 나눠야한다 🔍 왜 이렇게까지 한 클래스에 한 책임만 가져야하는가 클래스를 더욱 튼튼하게 한다 (변경사항이 다른 책임에 영향을 주지 않으므로, 유지보수 용이) 개방 - 폐쇄 원칙..

📱 Android 2023.01.08

[Hilt] 코드랩으로 Hilt 익히기 # 1

Android 앱에서 Hilt 사용 | Android 개발자 | Android Developers 이 Codelab에서는 Hilt를 사용하여 종속 항목 삽입을 실행하는 Android 앱을 빌드해 보겠습니다. developer.android.com Android 앱에서 Hilt 사용 코드랩을 따라 Hilt를 익혀보겠어요 ✏️ Hilt가 dagger를 기반으로 만들어진 DI라, Hilt도 Annotation을 씁니닷 라이브러리 추가하기 코드랩에 적혀있는 방법으로는 라이브러리가 추가가 안되더라구여,, 아무래도 최신버전이 아니라서 그런 거 같아요 1. plugin id 추가 id 'kotlin-kapt' id 'dagger.hilt.android.plugin' 2. 프로젝트 단위 build.gradle plug..

📱 Android 2023.01.07

DI (Dependency Injection) 의존성 주입

코루틴으로 기존 프로그램 구조를 변경하다가, DI에 대해 다시 재정리가 필요할 것 같아서 재정리..합니다 DI (Dependency Injection) 의존성 주입 직접 객체를 생성하지 않고, 외부로부터 주입받는 방법 (객체의 의존성을 주입) 왜 이런 개념을 사용해야하는지 알아보겠습니다 (공식문서 참조) 의존성을 주입하지 않는 예시(클래스에서 인스턴스를 직접 생성) class Car { private val engine = Engine() fun start() { engine.start() } } fun main(args: Array) { val car = Car() car.start() } 위 코드에서의 문제점은 😱 Car, Engine이 너무 밀접하게 연결됨 (테스트가 어려움) 😱 Car에서 Engi..

📱 Android 2022.12.05

[Android] Custom Spinner

안녕하세요 오늘은 spinner에 대해 사용해보겠습니다 보통, 문자 인증 시 통신사 선택할 때 자주 사용되는데 저는 DatePicker 대신 년도+월을 선택할 수 있는 Spinner를 만들고자 합니다 (화면에 날짜를 선택하는 영역을 최대한 줄이고 싶어서요) Spinner 드롭다운의 형태로 여러 개의 데이터 중 하나의 데이터를 선택할 수 있는 View입니다 자주 접하는 모양의 View일 거에요, 문자 인증 시 통신사를 선택하거나 이메일 주소를 선택할 때 등등 기본 형태는 위와 같지만, 저는 배경도 바꾸고 싶고 icon도 변경하고 싶어서 Custom을 하겠습니다 🚀 Spinner 사용하기 1. xml에 Spinner 선언 2. Activity or Fragment에 SpinnerAdapter 연결 Spinn..

📱 Android 2022.08.09

[Android] Custom Rating Bar

RatingBar SeekBar, ProgressBar의 확장으로 별점을 표시할 때 쓰이는 View입니다 터치 혹은 드래그로 별점을 정할 수 있습니다 아래사진처럼요! RatingBar의 자주 쓰이는 속성 android:isIndicator - RatingBar의 조절 여부 (true : 사용자가 조절 불가 , false: 사용자가 조절 가능) android:numStars - 별의 개수를 지정 (ex: android:numStars="5") - numStar 지정 시, RatingBar의 layout_width = "wrap_content"로 해야 지정한 개수가 제대로 보입니다 android:rating - 디폴트 별점 지정 (ex. android:rating="3") android:stepSize - ..

📱 Android 2022.08.04

[Android] RecyclerView - MultiViewHolder(2)

2021.05.15 - [Android] - [Android] RecyclerView (1) - Multi ViewHolder [Android] RecyclerView (1) - Multi ViewHolder 안녕하세요 :) 오늘은 RecyclerView를 사용해보겠습니다 굉장히 자주 쓰이는 부분이기에 저 또한 더 자세히 알아두고자 정리해보려 합니다. (사용 빈도는 높지만 프로젝트를 처음부터 구현하지 않 kong-droid.com 기존 포스팅이 존재하지만, 기존 포스팅에선 같은 모델에서 type에 따라 나누는 방식을 사용했지만 보통 RecyclerView를 사용할 때 다양한 Model을 사용하기 때문에 ViewHolder별로 다른 DTO를 MultiViewHolder로 보이는 방식을 사용해 보겠습니다 코..

📱 Android 2022.07.13

[Android] Fragment LifeCycle

2022.07.03 - [Android] - [Android] Activity LifeCycle 🧐 [Android] Activity LifeCycle 🧐 안녕하세요 오늘은 Activity의 LifeCycle에 대해 알아보겠습니다 :) 수없이 봐온 LifeCycle이지만, 더 상세하게 알아둔다면 좀 더 좋은 구조를 가진 앱을 개발할 수 있을 것 같아요 💪 위의 사진 순서대 kong-droid.com Activity LifeCycle에 이어서 Fragment LifeCycle에 대해서도 알아볼텐데 거의 비슷하지만, Fragment에 좀 더 추가된 부분들이 있습니다 그리고, 2020년에 onActivityCreated가 Deprecated 되면서 Lifecycle이 아래와 같이 변했습니다 Fragment의 ..

📱 Android 2022.07.06

[Android] 4대 Component

Component Application의 구성 요소입니다 Manifest 파일에 등록 필수 🔍 시스템에 컴포넌트를 알려야하기 때문에 일반 클래스와의 차이 일반 클래스: 생명주기 관리 개발자 코드 컴포넌트 클래스 : 안드로이드 시스템에서 생명주기 관리 또, 앱 안에서 독립된 실행단위로 이로 인해 안드로이드는 앱 실행 시점이 다양합니다 안드로이드에선 4개의 Component가 존재하는데, 각각 Component들에 알아보겠습니다 생성방법이나 사용법에 대해선 자세히 다루진 않겠습니다 😭 1. Activity 화면을 구성하고 사용자와 상호작용을 담당하는 컴포넌트 2. Broadcast Receiver 시스템에 어떤 이벤트가 발생 (ex.부팅, 배터리상태, 화면 On/Off)하면 실행되는 컴포넌트 Broadcas..

📱 Android 2022.07.05

[Android] Activity LifeCycle 🧐

안녕하세요 오늘은 Activity의 LifeCycle에 대해 알아보겠습니다 :) 수없이 봐온 LifeCycle이지만, 더 상세하게 알아둔다면 좀 더 좋은 구조를 가진 앱을 개발할 수 있을 것 같아요 💪 위의 사진 순서대로 알아보겠습니다 1. onCreate() 최초로 1회만 실행되기 때문에 필수로 구현되어야 하는 부분이고, 초기 1회만 실행되어야 하는 부분을 넣어줍니다 주로 setContentView()를 onCreate에서 호출합니다 2. onStart() 사용자에게 화면이 보여질 때 호출되고, 여러 번 호출이 가능합니다 3. onResume() 사용자와 상호작용을 할 수 있을 때 호출되며, 여러 번 호출이 가능합니다 즉, 포커스를 얻을 때 실행되는 부분이며 액티비티가 포커스를 잃기 전까지 이 상태에 ..

📱 Android 2022.07.03

[Android] MVVM 구현하기

안녕하세요 :) 이전 포스팅에서 MVVM에 대해 알아봤습니다만, 2022.05.30 - [Android] - [Android] Pattern (MVC, MVP, MVVM) 막상 MVVM으로 구현하려니, 적용이 꽤나.. 어려웠습니다 🥶 그래서 MVVM을 구현 시 알아둬야할 부분에 대해 자세한 개념보다는 어떻게 써야하는지를 정리하려고 합니다 .. 멀고도 험한 MVVM의 길 😮‍💨 ⚒ Skill ⚒ - ViewModel - LiveData - DataBinding - Repository - Dagger ViewModel - AAC (Clean Architecture을 쉽게 구현하도록 제공되는 library) 중 하나 - LifeCycle을 고려해 UI 관련 데이터를 저장하고 관리 👀 ViewModle을 사용하..

📱 Android 2022.06.27