본문 바로가기

Mobile/Android(Kotlin)46

[Android] Android can make an application. so What is an Android Application Lifecycle? Application Lifecycle 대부분의 경우 모든 Android 애플리케이션은 자체 Linux 프로세스에서 실행됩니다. 이 프로세스는 일부 코드를 실행해야 할 때 애플리케이션용으로 생성되며 더 이상 필요하지 않고 시스템이 다른 애플리케이션에 사용하기 위해 메모리를 회수해야 할 때까지 계속 실행됩니다. Android의 특이하면서 기본적인 특징은 애플리케이션 프로세스의 수명 주기 전체 기간이 애플리케이션 자체에 의해 직접 제어되지 않는다는 점입니다. 대신 이 수명 주기 전체 기간은 시스템이 실행 중인 것으로 파악하는 애플리케이션 요소, 요소들이 사용자에게 중요한 정도 및 시스템에서 사용할 수 있는 전체 메모리 양을 조합하여 시스템에 의해 결정됩니다. 애플리케이션 개발자는 다양한 애플리케이션 구성요소.. 2022. 9. 23.
[Android] XML 기반 View. What is View? What is View's Lifecycle? Let's Dive. What is View? View란 화면 안에 들어가는 하나의 요소를 의미한다. 다른 말로 컨트롤 혹은 위젯이라고도 불린다. 이러한 View들을 담고 있는 View를 ViewGroup이라고 하며, ViewGroup 또한 View를 상속받아 만들어졌다. Widget : 화면에 배치되어 있는 일반적인 컨트롤 역할을 하는 View (사용자 관점) Layout : 내부에 View를 포함하여 이들을 배치하는 역할을 하는 ViewGroup (개발자 관점) 안드로이드에서 View가 그려지는 과정 Activity가 포커스를 얻으면 레이아웃을 그리도록 요청한다. Android 프레임워크는 그리기 절차를 처리하지만 Activity는 자신의 레이아웃 루트 노드를 제공해야 하며 루트 노드부터 레이아웃 트리를 따라 레이아웃 드.. 2022. 9. 23.
[Android] Dive into Android LiveData. Basic concept of LiveData Library. 안녕하세요. 골드입니다. 오늘은 안드로이드에서 사용하는 LiveData에 대해서 정리하려고 합니다. LiveData는 이미 많은 분들이 사용하고 있을 것이라고 생각되는데요. 단순히 MVVM 패턴을 사용한다고 해서 기계적으로 ViewModel을 생성하고 변수를 LiveData로 래핑해서 Observe한 형식으로 만들어서 사용한 제 자신을 위한 글이기도 합니다. 1. LiveData를 사용하는 이유 LiveData를 사용하는 이유는 구글이 권장한 안드로이드 개발 방식인 이유도 있겠지만, 중요한 건 Observe하다는 것과 수명 주기를 인식하는 것이라고 생각됩니다. - Observe하다는 것은 LiveData가 감싸고 있는 객체를 항상 최신 데이터로 유지할 수 있다는 뜻입니다. 해당 변수를 구독하고 있는 곳에.. 2022. 8. 2.
[Android] Spinner(or RecyclerView) Custom Scrollbar. 안녕하세요 골드입니다. 종종 스크롤 바를 커스텀해야 하는 일이 있습니다. 오늘은 간단하게 적용할 수 있는 커스텀 스크롤을 구현하도록 하겠습니다. RecyclerView나 Spinner처럼 Scrollbar 속성을 선언할 수 있는 모든 View에 적용할 수 있습니다. 1. Drawable xml 파일 선언 Scrollbar는 두 부분으로 나뉘어 있습니다. 배경에 전체 스크롤 길이를 나타내는 Track 부분과 현재 스크롤 위치를 나타내는 Thumb입니다. 필요에 따라 두 개의 drawable xml 파일을 만들어 각각 적용하면 됩니다. 먼저 Track을 위한 drawable xml 파일입니다. 기본적으로 xml을 이용한 Shape 그리는 방법과 동일합니다. 다음은 Thumb 부분입니다. 파일은 drawabl.. 2022. 4. 27.
[Android/Kotlin] RecyclerView 구분선, 아이템 간격 Decoration 안녕하세요 골드입니다. 오늘은 리사이클러뷰를 활용할 때 사용하면 좋은 Decoration에 대해서 글을 쓰도록 하겠습니다. XML에서 Margin 설정하고 구분선 View를 그리지 않고 Decoration을 사용하는 이유. Decoration을 사용하면 아이템 index별로 간격을 설정할 수 있습니다. 이렇게 하면 0번째 아이템과 마지막 아이템의 간격이 미묘하게 다르게 생성되는 문제를 해결할 수 있습니다. XML에서 정의하는 구분선과 Decoration에서 그리는 View는 성능 차이가 있습니다. XML에서 뷰를 그리는 작업이 더 무거운데, 리사이클러뷰를 선언하여 리스트를 불러올 땐 단순히 낱개의 아이템을 불러오지 않고 대량의 아이템을 불러오기 때문에 이는 작지 않은 차이를 만들어 냅니다. Recycle.. 2021. 11. 18.
[Android/Kotlin] Convert URL to Bitmap 안녕하세요 골드입니다. 오늘은 url로 선언되어 있는 이미지를 Bitmap 객체로 변환하는 방법에 대해서 작성하도록 하겠습니다. 서버와 통신하면서 단순히 Glide(혹은 다른 라이브러리)에 URL을 바로 into()하여 사용하지 않고, Json 파일을 Bitmap으로 변환하는 일이 생길 때가 분명 있을 것입니다. 저는 함수를 이렇게 만들었습니다. try cahtch문과 관계없이 HttpURLConnection은 안드로이드의 메인 스레드에서 접근할 수 없습니다. 따라서 이 함수를 그냥 사용할 수 없습니다. 그냥 사용할 경우 이와 같은 에러가 발생합니다. 저 같은 경우 코루틴을 사용하였습니다. 코루틴의 Dispatcher를 IO로 변경하여 HttpURLConnection 객체를 사용하도록 하였습니다. Asy.. 2021. 8. 24.
[Android/Kotlin] ViewModel + LiveData + ViewBinding 예제 안녕하세요 골드입니다. ViewModel + LiveData + View Binding은 현시점 구글에서 권장하는 애플리케이션 개발 방법입니다. 먼저 Binding은 findViewById를 대체할 수 있다는 장점을 가지고 있습니다. 두 번째로 ViewModel은 앱의 생명주기에 대한 처리(예를 들어 화면 전환)를 따로 하지 않아도 데이터가 유지된다는 장점이 있고, LiveData를 함께 사용하여 값이 변했을 때, 이를 관찰하고 있는 UI 역시 데이터가 업데이트된다는 장점이 있습니다. 오늘은 간단하게 이 셋을 함께 사용하는 예제를 만들어 보겠습니다. 먼저 MainActivity와 Blank Fragment를 하나 만들겠습니다. 1. View Binding 뷰 결합 먼저 View Binding을 사용하도록.. 2021. 7. 29.
[Android/Kotlin] Broadcast Receiver, 시간 변화에 따른 Time Change Event. Time Tick Action. 안녕하세요 골드입니다. 오늘은 안드로이드의 Broadcast Receiver를 사용하여 시간 변화에 따른 Listener 이벤트를 발생시키는 예제를 만들어 보도록 하겠습니다. 안드로이드는 앱 혹은 시스템에서 특정 이벤트 발생에 대한 브로드캐스트 메시지를 주고 받을 수 있습니다. 어떤 이벤트에 대한 브로드캐스트 메시지를 주고 받음으로써 이벤트를 수신할 수 있습니다. 자세한 설명은 공식 홈페이지를 참고하세요. https://developer.android.com/guide/components/broadcasts?hl=ko 브로드캐스트 개요 | Android 개발자 | Android Developers Android 앱은 Android 시스템 및 기타 Android 앱에서 게시-구독 디자인 패턴과 유사한 브로.. 2021. 7. 26.
[Android/Kotlin] BottomNavigationView + NavController 연결 안녕하세요 골드입니다. 오늘은 안드로이드에서 사용하는 Bottom Navigation View에 Nav Controller를 연결하는 방법에 대해서 글을 쓰려고 합니다. Bottom Navigation View는 핸드폰 하단에 탭 형식으로 제공되는 형태입니다. 특정 탭에 Activity/Fragment를 연결하여 보여줄 수 있죠. 여기에 Nav Controller는 안드로이드에서 제공하는 내비게이션을 사용하는 방법입니다. 이러한 그래프 형태는 다양한 IDE에서 볼 수 있습니다. 특히 게임 엔진에서 오래 전부터 사용한 방식인데 안드로이드는 이 그래프를 통해 Activity/Fragment의 내비게이션을 좀 더 편리하게 설정할 수 있습니다. 위 사진에 제가 커스텀한 앱의 탭이 두 개이고, 밑에 그래프의 시작.. 2021. 7. 11.
반응형