안드로이드
-
[Android] LayoutInflater란안드로이드 2022. 3. 22. 20:32
LayoutInflater란?🤔 XML에 미리 정의해둔 틀을 실제 메모리에 올려주는 역할을 합니다. Inflater 단어의 뜻은 부풀리다는 의미로 LayoutInflater 이 단어에서도 역할을 유추할 수 있습니다. 즉 LayoutInflater는 XMl에 정의된 Resource를 View 객체로 반환해 주는 역할을 합니다. 우리가 매번 사용하는 onCreate() 메서드에 있는 setContentView(R.layout.activity_main) 또한 Inflater 역할을 합니다. LayoutInflater 생성 방법👀 getSystemService : 가장 기본적인 방법으로 context에서 LayoutInflater를 가져오는 방법입니다. val inflater: LayoutInflater = c..
-
[Android] 아키텍처 패턴(MVC,MVP,MVVM)에 대하여안드로이드 2022. 3. 20. 20:29
아키텍처 패턴이란🤔 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미합니다. 소프트웨어 시스템의 구조를 구성하기 위한 기본적인 윤곽을 제시합니다. 아키텍처 패턴에는 서브 시스템들과 그 역할이 정의되어 있으며, 서브 시스템 사이의 관계와 여러 규칙, 지침 등이 포함되어 있습니다. 아키텍처 패턴의 장점👍🏻 시행착오를 줄여 개발 시간을 단축시키고, 고품질의 소프트웨어를 생산할 수 있습니다. 검증된 구조로 개발하기 때문에 안정적인 개발이 가능합니다. 이해관계자들이 공통된 아키텍처를 공유할 수 있어 의사소통이 간편해집니다. 시스템의 구조를 이해하는 것이 쉬워 개발에 참여하지 않은 사람도 손쉽게 유지보수를 수행할 수 있습니다. 시스템이 특성을 개발 전에 예측하는 것이 가능해집니다. 그럼 이..
-
[Android] ConstraintLayout안드로이드 2022. 3. 19. 21:51
ConstraintLayout은 RelativeLayout과 비슷하게 레이아웃 사이의 관계에 따라 모든 보기의 레이아웃이 결정되지만, RelativeLayout보다 유연하고 Android 스튜디오의 Layout Editor와 함께 사용하기 수월합니다. ConstraintLayout을 사용해야 하는 이유🚀 ConstraintLayout를 사용해야 하는 이유를 알기 이전에 먼저 뷰가 그려지는 과정을 이해할 필요가 있습니다. 뷰가 그려지는 과정은 3가지 단계를 거쳐 view가 화면에 나타납니다. Measure 단계 : view의 크기를 결정하는 단계입니다. 이 단계는 root 노드에서 시작해 반복적으로 호출되며, 각각의 호출은 부모로부터 전달된 인자들과 함께 발생합니다. 이 인자들은 widthMeasureSp..
-
[Android] Fragment에서 Google Map Api 사용하기안드로이드 2022. 3. 18. 17:44
Android Fragment에서 Google Map API를 사용법을 정리해보았습니다. 1. 프로젝트 생성 Google Api Console에서 프로젝트를 생성해 줍니다. 프로젝트 생성 후 API 라이브러리로 이동하여 API 사용 등록합니다. Maps SDK for Android 텝을 들어가 해당 API 사용을 클릭합니다. 2. API 키 생성 및 설정 Google API 대시보드 화면에서 사용자 인증 정보 텝으로 이동. 사용자 인증 정보 텝에서 사용자 인증정보 만들기 클릭. 그러면 위와 같이 API 키가 생성됩니다. 그런 다음 우측에 있는 API 키 수정 버튼을 클릭하여 애플리케이션 제한사항을 설정해줍니다. Google Map API를 적용할 Android 앱의 패키지 명을 적어주고 SHA-1 키를 ..
-
[Android] SharedPreferences안드로이드 2022. 3. 17. 17:00
SharedPreferences란 안드로이드 앱은 SharedPreferences를 통해 Integer, String 타입의 간단한 데이터를 저장할 수 있습니다. 단순히 숫자 몇 개, 문자열 몇 개를 저장하기 위해 SQLite나 서버 DB를 이용하기에 부담스럽기 때문에 SharedPreferences를 사용하는 것이 적합합니다. 특징👍🏻 SharedPreferences는 간단한 데이터를 앱의 개별 저장소에 xml파일로 저장 앱이 삭제되기 전까지 저장한 데이터가 보존 SharedPreferences 객체를 생성할 때 파일 이름을 인자로 전달하여, 그 이름으로 xml파일이 생성 데이터를 저장할 때는 key/value 형태로 저장 SharedPreferences는 put/get메소드를 제공하여 데이터를 저장하..
-
[Android] Room 사용법안드로이드 2022. 3. 16. 20:43
Room이란? 스마트폰 내장 DB에 상당한 양의 구조화된 데이터를 저장하기 위해 사용하는 라이브러리입니다. ORM(Object Relational Mapping) 라이브러리로서 DB 데이터를 Java 또는 Kotlin 객체로 매핑해줍니다. Room은 SQLite를 내부적으로 사용하지만, DB를 구조적으로 분리하여 데이터 접근의 편의성을 높여주고 유지보수에 편리합니다. 또한, 다양한 Annotation을 통해 컴파일 시 코드들을 자동으로 만들어주며 LiveData, RxJava와 같은 Observation 형태를 지원하고 MVP, MVVM과 같은 아키텍처 패턴에 쉽게 활용할 수 있도록 되어 있습니다. SQLite 대신 Room을 사용하는 이유‼️ 위에 나오는 안드로이드 문서에서처럼 SQLite는 쿼리의 컴..
-
[Android] ItemTouchHelper란안드로이드 2022. 3. 11. 16:07
ItemTouchHelper란🤷🏻♂️ ItemTouchHelper는 RecyclerView에 삭제를 위한 스와이프 및 드래그 앤 드롭을 지원하는 유틸리티 클래스입니다. ItemTouchHelper는 사용자가 액션을 수행할 때 이벤트를 수신하는 RecyclerView 및 이벤트에 반응하는 콜백 메서드가 선언되어있는 Callback 클래스와 함께 사용합니다. 즉, 구조적으로 RecyclerView와 ItemTouchHelper.Callback을 ItemTouchHelper가 연결시켜주는 것입니다. 주요 메소드 attachToRecyclerView(RecyclerView) : ItemTouchHelper를 제공된 RecyclerView에 붙입니다. ItemTouchHelper.Callback 이 클래스는 앱..
-
[Android] Retrofit 쉼표로 구분된 값을 하나의 파라미터로 전송해야 할 때 (ID =1,2,3,4,5)안드로이드 2022. 3. 10. 16:43
@GET("/data") suspend fun getSomething( @Query("id") id1 : String,id2:String,id3:String ) : Observable 위와 같이 하나의 파라미터 안에 배열이나 리스트가 아닌 쉼표로 구분된 값을 전송해야 할 때 다음과 같이 작성하면 됩니다‼️ @GET("/data") suspend fun getSomething( @Query("id",encoded = true) appId : String? ) : Observable 위와 같이 쉼표로 구분된 값을 하나의 문자열로 넘겨주면 됩니다. fun getServicesId(services: ArrayList): String? { var serviceName = "" services.forEach { s..