오늘은 안드로이드에 Notification 기능을 정리해보려고 한다. Notification 즉, 알람기능의 경우는 개인적으로 모바일에서는 중요한 기능이라고 생각한다. 웹과 달리 모바일 어플리케이션의 경우 모바일의 휴대성이라는 점을 고려해야한다. 알림(Notification) 개요 앱의 UI와 별도로 사용자에게 앱과 관련한 정보를 보여주는 기능 알림을 터치하여 해답 앱을 열 수 있다. 바로 간단한 작업(ex 문자 답하기)을 할 수 있음(Android 7.0부터) 보통 단말기 상단 부분에 표시된다. 앱 아이콘의 배지로도 표시(Android 8.0부터) 알림(Notification) 표시 권한 안드로이드 13 (API 33) 부터 알림 표시를 위해 동적 권한 필요 Manifest 파일에 POST_NOTIFI..
아래 그림과 같이 도형을 선택하는 라디오 버튼을 만들고, 선택한 도형에 따라 터치할 때 그린다. activity_main.xml MainActivity import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.example.myapplication.databinding.ActivityMainBinding class MainActivity() : AppCompatActivity() { lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ..
fork 는 다른 사람의 github repository를 복제하여 어떤 부분을 수정, 추가, 삭제를 용이하도록 해주는 복제기능입니다. fork 한 저장소는 원본(repository)와 연결되어있다. 이때 forked된 repository에서 Sync fork를 누르면 원본에서의 변화를 그대로 반영 할 수 있다. 아래의 그림에서는 HSU-DCnM-Study이라는 Organization 의 Algorithm-DataStructure이라는 repository를 Fork 해온 것이다. 그 후 original repository에 변경사항을 적용하고 싶으면 해당 저장소에 pull request를 해야한다. pull request 하기 전까지는 내 github에 있는 forked repository에만 chang..
커스텀뷰에 대해서 정리를 하려고 한다. 커스텀 뷰 란? 안드로이드 앱을 개발하다 보면 일반적인 뷰로는 내가 원하는 결과를 만들 수 없는 경우가 발생하는데, 이런 경우 직접 ‘커스텀 뷰’를 만들어야 한다. 안드로이드의 UI 요소는 모두 View를 상속한다. 아래에 그림을 참고하자. View를 상속하여 UI 요소의 외형을 그리고 UI이벤트를 처리한다. CustomView를 사용하는 이유는 View의 재사용을 위해서다. 디자인이나 React 같은 프레임워크에서는 이런 개념을 컴포넌트라고 부른다. 디자인과 UX의 통일성을 유지하기 위해 동일한 형태의 UI를 여러 군데에서 사용하게 되는데 이런 UI를 사용하는 곳마다 각각 구현하기에는 코드의 길이도 길어지고, 수정 및 관리하기에도 어렵다. CustomView의 핵..
Clean architecture MVVM, MVP 등등 아키택처 패턴 Hilt를 이용한 의존성 주입 Paging 3 Flow Room 유닛테스트, UI테스트 Retrofit 비동기처리(Couroutine) 이미지 활용 미디어 활용(Exployer) Custom UI 및 다양한 디자인 UI 경험 안드로이드 기본 기능 외부 리소스 활용(오픈 APi, Glide 등) JetPack FireBase 할게 너무 많다....
Branch를 보호하기 위한, 깃에서 제공하는 보호 장치입니다. 여러 사람들이 동시에 같은 코드 베이스에서 작업을 하다보면 여러가지 문제가 생길 수 있습니다. 허락받지 않은 사람이 무질서하게 코드를 작성하고 머지하는 경우도 발생하고, 설령 허락을 받은 멤버가 코드를 작성하고 머지하더라도 그 코드가 테스팅을 거치지 않은 문제가 많은? 코드 일수 도 있습니다. 실례로 제가 프로젝트를 진행하였을때도, 자기 짠 코드는 틀릴 일이 없다고 자신만만하게 말하시던 분 코드를 머지한 이후에 크게 문제가 발생한 경우도 있었습니다. 추후에 테스팅에 대한 중요성를 설명드리겠지만, 머지한 이후 문제가 발생한 경우 여러분들이 작업하는 프로젝트 혹은 서비스가 크게 망가질 수 도 있습니다. 그렇기에 깃허브에서는 Pull Reques..
표현력과 간결함 코틀린의 최신 언어 기법을 이용하면 훨씬 간결한 구문으로 프로그램을 작성할 수 있습니다. 같은 로직을 자바와 코틀린으로 각각 작성해 보면 코틀린의 코드가 훨씬 간결하다는 것을 알 수 있습니다. 안전한 코드(safer code) 코틀린은 널안정성을 제공합니다. 객체지향 프로그래밍에선느 객체는 널 상태일 수 있으며, 이때 런타임 오류인 널 포인트 예외(NullPointException)가 발생할 수 있습니다. 따라서 객체가 널인 상황을 고려해 개발해야 하는데, 코틀린에서는 변수를널 허용(Nullable)과 널 불허용(not null)으로 구분해서 선언합니다. 이로써 널과 관련된 여러 부분을 컴파일러가 해결해줍니다. 상호운용성(interoperable) 코틀린은 자바와 100% 호환합니다. 따..
문제 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비교 횟수가 매우 달라진다. 예를 들어 10장, 20장, 40장의 묶음이 있다면 10장과 20장을 합친 뒤, 합친 30장 묶음과 40장을 합친다면 (10 + 20) + (30 + 40) = 100번의 비교가 필요하다. 그러나 10장과 40장을 합친 뒤, 합친 50장 묶음과 20장을 합친다면 (10 + 40) + (50 + 20)..