ConstraintLayout이란 ConstraintLayout은 부모 뷰그룹 안의 다른 요소들과의 상대적인 제약조건을 설정함으로써 화면에 배치되도록 하는 레이아웃을 말합니다. 기존의 레이아웃(Linear, Relative 등등)에 비해 레이아웃이 중첩하지 않도록 복잡한 레이아웃을 만들 수 있습니다. 또한 안드로이드 스튜디오의 레이아웃 에디터로 만들기 편하고, 성능이 다른 레이아웃에 비해 우수합니다. ConstraintLayout을 쓰는 것이 복잡한 View를 성능 저하 없이 만들 수 있는 방법으로 권장되었는데, Compose에서는 굳이 그럴 필요가 없어서 (Compose자체가 성능이 우수하기 때문에) 코드의 가독성이 아닌 이상은 굳이 권장하지 않는다고 한다. 근데 XML에서는 굳이 상관없으니 Const..
Android에서 View, ViewGroup, XML Layout은 사용자 인터페이스(Ui)를 설계하고 구성하는데 사용되는 중요한 개념과 구성 요소이다. 오늘은 이러한 것들에 대해서 정리를 해보자. View 란? View는 Android 애플리케이션에서 사용자 인터페이스의 기본 구성 요소이다. 버튼, 텍스트상자, 이미지, 체크박스와 같은 사용자가 보는 Ui 요소는 모두 View의 하위 클래스이다. View는 사용자 입력을 처리하고 화면에 그래픽 요소를 그릴 수 있다! View 객체를 일반적으로 위젯 이라고 부르며, 위에서도 언급했듯 Button 또는 TextView와 같은 여러 서브 클래스 중 하나 일 수 있다. ViewGroup 이란? ViewGroup을 일반적으로는 레이아웃 이라고 부르며, Line..
안드로이드에서 이미지 로드 라이브러리란 Glide 외에 Coil, Picasso, Presco도 있지만 오늘은 Glide만 알아보자. Glide란? Glide란 Android에서 많이 사용하는 이미지 로드 라이브러리이다. 안드로이드 앱에서 이미지 로딩 및 디스플레이를 쉽게 처리 할 수 있게 도와주는 오픈 소스 라이브러리이다. 이미지 로딩은 안드로이드 앱 개발에서 자주 사용되는 작업 중 하나이며, 대량의 이미지를 효율적으로 로드하고 캐싱하여 앱 성능을 최적화하는 것이 중요한데, Glide는 이러한 작업들을 쉽게 처리할 수 있도록 도와준다. 공식페이지: https://bumptech.github.io/glide/ 공식깃허브: https://github.com/bumptech/glide Glide를 사용해보자..
MVI 패턴이란 Android MVI 패턴은 Model-View-Intent의 약자로, 안드로이드 앱 개발에서 사용되는 아키텍처 패턴 중 하나입니다. MVI 패턴은 기존의 MVP, MVVM 등 다른 패턴과는 다르게 데이터 흐름이 단방향으로만 흐르는 것이 특징입니다. 뷰에서 인텐트를 발생시켜 모델에 전달하고, 모델에서 처리한 결과를 다시 뷰로 전달하는 방식으로 동작합니다. MVI 패턴에서는 상태를 중심으로 구성됩니다. 앱의 상태를 변경하는 인텐트는 불변의 데이터 구조로 구현되며, 상태 변화를 처리하는 모델 역시 불변의 데이터 구조로 구현됩니다. 뷰는 상태를 표시하기 위해 불변의 데이터 구조를 이용합니다. 이러한 구조는 다양한 이점을 가지고 있습니다. 불변의 데이터 구조를 사용하므로 코드의 안정성이 높아지고..
의존성 주입이란? 안드로이드에서 의존성 주입(Dependency Injection)은 객체 지향 프로그래밍(OOP)에서 사용되는 디자인 패턴 중 하나입니다. 의존성 주입은 객체가 필요로 하는 다른 객체를 직접 생성하는 대신에, 이를 외부에서 전달받는 방식으로 구현됩니다. 이는 객체 간의 결합도(Coupling)를 낮추고, 유지보수와 테스트 용이성을 증가시키는 데 도움이 됩니다. 안드로이드 앱에서 의존성 주입을 사용하면, 앱의 여러 컴포넌트(Activity, Fragment, Service, ViewModel 등)에서 공통적으로 사용되는 객체(예: 데이터베이스, 네트워크 등)를 한 곳에서 관리하고, 이를 각각의 컴포넌트에서 사용할 수 있습니다. 이를 통해 코드의 중복을 줄이고, 유지보수와 테스트 용이성을 ..
이전에 클린아키텍처가 무엇인지에 대해서 글을 썻다. 오늘은 클린아키텍처를 안드로이드에서 실습해보자. 사이드 프로젝트 형식으로 해보았다. 1. 맨 처음에 Android Project 형식을 App -> Project로 바꾼 이후에 Project를 우 클릭하면 다음과 같은 화면이 나온다. 2. 이후 Module을 클릭하면 이와같은 Create New Module이 나온다. 그러면 2번째에 있는 Android Library를 클릭하여 사용자가 생성하고 싶은 이름으로 새로운 모듈을 생성하자. (ex. Data. Domain. Presentaion) 3. 위와 같은 방법으로 실행하였다면 아래와 같이 셋팅이 되어있을 것이다. 그렇다면 Gradle 파일로 가서 의존성을 넣어주자. Data 모듈의 Gradle 파일에는..
오늘은 안드로이드의 Context에 대해서 공부해보자. Context란? 애플리케이션(객체)의 현재 상태의 맥락(context)를 의미한다. Context 는 크게 두 가지 역할을 수행하는 Abstract 클래스 입니다. 어플리케이션에 관하여 시스템이 관리하고 있는 정보에 접근하기 안드로이드 시스템 서비스에서 제공하는 API를 호출 할 수 있는 기능 컨텍스트는 새로 생성된 객체가 지금 어떤일이 일어나고 있는지 알 수 있도록 한다. 따라서 액티비티와 애플리케이션에 대한 정보를 얻기 위해서는 컨텐스트를 사용한다. 또한 컨텍스트는 시스템의 핸들러와도 같다. 리소스, 데이터베이스, preferences 등에 대한 접근을 제공한다. 안드로이드 앱에서는 Activity가 존재하는데, 액티비티는 애플리케이션이 현재 ..