본문 바로가기

안드로이드

(41)
[안드로이드] 푸쉬 알림 (기초) 안드로이드 공식 문서 https://developer.android.com/guide/topics/ui/notifiers/notifications?hl=ko 알림 개요 | Android 개발자 | Android Developers 알림 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 알림은 사용자에게 미리 알림을 주고 다른 사람과의 소통을 가능하게 하며 앱에서 보내는 기타 정 developer.android.com 개인 프로젝트를 진행하던 도중 백그라운드에서 위치를 받아 일정 위치에 도달하면 푸쉬 알림이 오도록 구현하였는데, 이때 사용한 방법을 잊지 않기 위해 기록해둔다. 해당 방법은 간단한 방법이지만, 우리가 흔히 사용하는 앱들은 앱이 종료되어 있는 상태에서 푸쉬 알..
[안드로이드] AlertDialog AlertDialog는 유저에게 선택 또는 어떠한 입력을 요구할 때 사용하는 메시지 창이다. 보통 작은 화면으로 사용되며, 유저가 다음으로 넘어가기 전 무언가 조치를 취해야 할 때 사용되는 Modality Event이다. 사용 방법 AlertDialog.Builder(context) .setTitle("Title") .setMessage("Message") .setPositiveButton("예") { _, _ -> //TODO Positive Action } .setNegativeButton("아니오") { _, _ -> //TODO Negavive Action } .create() .show() Custom Dialog // 초기화 val dialog = Dialog(this) dialog.setCo..
[안드로이드] 서버 통신 Retrofit2 Retrofit은 OkHttp 기반으로 만들어진 Http 통신 라이브러리다. OkHttp 란? OkHttp는 효율적인 Http 클라이언트이다. HTTP/2 지원을 통해 동일한 호스트에 대한 모든 요청이 소켓을 공유할 수 있다. 연결 풀링은 요청 대기 시간을 줄인다.(HTTP/2를 사용할 수 없는 경우) Transparent GZIP는 다운로드 크기를 줄인다. 응답 캐싱은 반복적인 요청으로부터 네트워크를 완전히 피한다. 자세한 내용은 아래 링크를 참조 바랍니다. https://square.github.io/okhttp/ Overview - OkHttp OkHttp HTTP is the way modern applications network. It’s how we exchange data & media. ..
[Kakao Api] 키 해시 생성 및 플랫폼 등록 윈도우 기준으로 작성 된 방법이므로, Mac 등 다른 운영체제의 방법과는 상이할 수 있습니다. 1. Kakao Developer에 애플리케이션 추가 https://developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 사이트 상단의 "내 애플리케이션"을 클릭 후 애플리케이션을 추가해준다. 2. 키 해시 생성 준비 과정 카카오 API에서는 사용자 애플리케이션에 등록 된 키 해시를 통해 인증을 하고, API를 호출할 수 있기 때문에 키 해시를 생성 후 등록하지 않으면 카카오 API를 사용할 수 없다. 2-1. open..
[서버 통신] - Http 프로토콜 우리는 하나의 서비스를 제작할 때, 크게 3가지로 나눈다. 1. 사용자들이 직접 접하는 클라이언트 2. 클라이언트로부터 요청 받은 내용을 추려 전달해주는 서버 3. 데이터를 저장하는 데이터베이스 보통은 서버에서 데이터베이스까지 관리하는 경우가 많다. 클라이언트와 서버는 서로 통신을 하여 데이터를 주고 받아야 하는데 이때 사용되는 통신 프로토콜이 Http 프로토콜이다. HTTP 프로토콜이란? Http 프로토콜은 정보(데이터)를 송·수신하도록 설계된 프로토콜이다. 기본적으로 요청과 응답으로 나누어지며, 요청은 클라이언트가 서버에 데이터를 요청할 때 사용되며, 구성 요소는 다음과 같다. 요청 구성 요소 1. 요청 Header Hearder는 클라이언트가 사용하는 브라우저 및 앱, 요청되는 데이터와 같은 핵심 ..
[안드로이드] Viewbinding 우리는 안드로이드 개발을 하면서 Layout에 있는 Button, TextView 등 값을 변경, 클릭 등 이벤트에 대한 동작을 처리하기 위해 findViewById를 사용하여 뷰 객체를 가져와 사용하였다. 만약 Layout에서의 뷰 객체가 많아지고 모두 이벤트 동작을 처리해줘야 할 때, 이와 같은 방법은 비효율적일 것이다. 뷰 객체가 10개일 경우, findviewbyid로 뷰 객체 선언을 10번을 해주어야 하기 때문이다. Viewbinding은 이러한 문제점을 해결한 findviewbyid를 대체하는 기능이다. 공식문서 https://developer.android.com/topic/libraries/view-binding?hl=ko 사용법 1. setting 제일 처음으로 build.gradle(M..
[안드로이드] RecyclerView 리사이클러뷰 개념 및 사용법 우리는 안드로이드 앱을 만들 때 어떠한 목록을 구현해야 될 상황이 생긴다. 구현할 데이터 리스트를 받아 화면에 띄워줘야 하는데, 받는 데이터의 개수는 유동적이며, 내용 또한 모두 다르기 때문에 우리가 하나하나 구현해 줄 수는 없다. 이를 해결하기 위해 처음에 나온 것이 ListView이며 ListView의 단점을 보완하여 다시 나온 것이 RecyclerView이다. RecyclerView와 ListView의 차이 ListView RecyclerView 스크롤로 인해 없어진 객체(목록)은 삭제되며, 반대로 추가로 보여지는 객체는 생성된다. 스크롤로 인해 없어진 객체는 삭제되지 않고 뒤쪽으로 재배치되어 재사용된다. 생성과 삭제가 반복되기에 비효율적이다. 객체를 재사용하기 때문에 효율적이다. 사용법 시작하기에..
[디자인 패턴] MVVM 디자인 패턴은 MVC를 시작으로 MVP을 거쳐 MVVM로 발전해왔다. 그러나 세가지 방법 모두 서로의 장단점이 있기 때문에 모두 사용되고 있으며, 프로젝트의 방향성에 맞는 디자인 패턴을 선택하여 사용하면 된다. MVVM 패턴 MVVM 모델은 기존의 MVC 모델과 MVP 모델에서의 View와 Controller/Presenter 사이에서의 강한 의존성을 약화시킨 모델이다. 기존에는 Controller/Presenter에서 UI 조작이 일어났다면, MVVM 모델에서의 ViewModel은 UI를 조작하지 않는다. 대신 View에서 ViewModel을 관찰하며 UI를 업데이트를 하는데 이를 Observe라 한다. 필요성 안드로이드는 사용할 수 있는 리소스가 제한적이다. 이로 인해 운영체제는 언제든 앱 구성 요소..
[디자인 패턴] MVC 패턴 디자인 패턴이란? 인터넷에 검색해보면 "공통적으로 발생하는 문제에 대해 재사용이 가능한 해결책" 이라 나온다. 개발의 역사가 길지는 않지만 지금까지 개발하면서 생기는 공통적인 문제들을 쉽게 해결할 수 있도록 만든 것이 디자인 패턴이라고 생각한다. 안드로이드 디자인 패턴에는 대표적으로 MVC, MVP, MVVM가 있다. MVC 패턴이란? MVC란 Model - View - Controller 의 약자이다. Model - 데이터 View - 사용자 화면 Controller : Model 과 View를 연결해주는 관제탑 역할 MVC의 관계는 다음과 같다. Model Model은 데이터와 관련된 작업을 하는 곳 안드로이드에서는 Data Class가 Model을 담당하고 있다. View View는 사용자가 직접적..
[안드로이드] 이미지 Glide 정적인 이미지의 경우 XML 파일에서 이미지를 지정해주기에 Glide를 사용할 필요는 없다. 그러나 동적인 경우, 서버에서 이미지 파일의 경로를 얻어와 이미지를 구현해야 할 경우 대표적인 프레임워크 중 하나인 Glide를 사용한다. Glide의 다양한 기능들을 알아보고 싶다면 Glide 공식 문서를 참고 바랍니다. Glide 사용 방법 기본 설정 settings.gradle repositories { google() mavenCentral() } build.gradle(Module) dependencies{ implementation 'com.github.bumptech.glide:glide:4.16.0' } Code 공식 문서에서의 사용법 -Java- ImageView imageView = (Image..