본문 바로가기
반응형

분류 전체보기91

[Android] 여러 개의 LiveData를 한번에 핸들링하는 MediatorLiveData MediatorLiveData란? LiveData의 하위 클래스로 다른 LiveData 객체를 Observe하고 해당 객체의 OnChanged 이벤트를 받습니다. 즉, 하나의 MediatorLiveData에 여러 개의 LiveData를 등록하고 한 번에 핸들링할 수 있습니다. 주요 함수로는 addSource() : observe할 LiveData와 수행할 로직을 추가 removeSource() : 추가된 LiveData 삭제 MediatorLiveData.java 파일을 살펴보면 public class MediatorLiveData extends MutableLiveData { private SafeIterableMap> mSources = new SafeIterableMap(); MediatorLive.. 2022. 10. 13.
[Android] 두 개의 RecyclerView 사이에서 Drag and Drop 구현하기 개요 일반적으로 ReyclerView에서 Drag and Drop을 구현할 때는 ItemTouchHelper를 사용해서 구현합니다. 하지만 두 개 RecyclerView 사이에서 Drag and Drop을 구현하기에 어려움이 있어 DragListener를 통해 구현해 보았습니다. 해당 Drag and Drop을 구현하기 위해 ListAdpater, ViewModel, Databinding을 사용하였습니다. 다음은 실제로 구현한 화면입니다. 설명 우선 Drag and Drop을 구현하기 위해 크게 2개가 필요합니다. DragListener : RcyclerView와 ViewHolder에 DragListenr를 등록하기 위한 abstarct class입니다. ItemModifyListener : Reycle.. 2022. 9. 17.
[Android] 런처앱(Launcher app)에서 Widget 생성하기 Widget을 사용하기 위해 알아야 하는 기본 클래스 1) AppWidgetHost 홈 화면과 같이 UI에 앱 위젯을 삽입하고자 하는 AppWidget 서비스와의 상호작용을 제공하는 클래스이다. 2) AppWidgetHostView 위젯이 표시되어야 할 때마다 래핑되는 프레임입니다. 3) AppWidgetManger AppWidget의 상태를 업데이트하고 설치된 AppWidget provider에 대한 정보와 그 위젯과 연관된 여러 가지 상태에 대한 정보를 얻을 수 있는 클래스이다. Launcher 앱에 등록된 위젯 생성 및 관리 위젯을 생성하기 위해서는 다음과 같은 과정으로 이루어집니다. 현재 Launcer 앱에 있는 모든 위젯 가져오기 해당 widget의 packageName, className을 가.. 2022. 9. 1.
[Android] DataBinding이란? 오늘은 ACC의 하나인 Databinding에 대하여 공부해봅시다. Databinding은 안드로이드 앱에서 MVVM Architecture을 구현하기 위해 주로 사용합니다. 보통 ViewModel과 LiveData와 같이 사용합니다. 1️⃣ DataBinding이란? 기존의 View를 참조하기 위해서 보통 findViewById를 사용하였다. findViewById는 런타임에 view계층을 탐색하여 찾습니다. View가 깊어질수록 탐색 시간이 더 길어지므로 사용자 입장에서 앱을 사용할 때 반응을 느리게 할 수 있는 요소가 됩니다. 하지만 Databinding을 사용하면 컴파일 타임에 activity나 Fragment와 layout을 연결할 수 있습니다. 컴파일러는 activity가 생성될 때 bindi.. 2022. 8. 14.
[Linux] 윈도우와 파일 공유를 위한 삼바(SAMBA) 설치 오늘은 윈도우와 리눅스 사이에서 파일을 공유할 수 있게 해주는 samba라는 프로토콜에 대해 알아보려고 합니다. 보통은 윈도우를 통해 개발을 하고 이를 리눅스를 통해 빌드를 하고 싶을 때 많이 사용할 때 주로 사용합니다. 1. SAMBA란? 리눅스와 윈도우 사이에서 파일 공유를 위한 프로토콜 (일종의 공유 폴더) Samba를 통해 공유 가능한 범위 파일 프린터 CD-ROM DVD-ROM USB 이제 설치하는 방법을 알아봅시다. 2. SAMBA 설치 필자의 Linux 환경은 Ubuntu 20.04 LTS입니다. 터미널을 열고 아래의 명령어를 입력합니다. apt-get install -y samba 2-1. 삼바 계정 생성 삼바 계정을 등록할 때는 아이디는 기존의 리눅스 계정을 만들 때 등록한 계정 이름을 .. 2022. 8. 7.
[Android] The emulator process for AVD has terminated 오류 해결 문제 발생 이번에 Android Studio를 업데이트하면서 앱 테스트를 위해 Emulator를 사용했는데 계속 업데이트가 필요하다고 하였습니다. 그래서 최신 버전으로 업데이트를 했는데도 문제가 해결되지 않았습니다. 그래서 Device Manager에서 직접 Emulator를 켰는데 다음과 같은 에러 문구가 떴습니다. The emulator process for AVD has terminated 그리고 해결방법을 찾아보았는데 생각보다 간단하였습니다. 해결 방법 근본적인 문제는 AVD를 실행하기 위한 SDK Tool이 부족해서였습니다. 해결방법은 맥을 기준으로 Tool > SDK Manger를 들어가서 다음 3개의 SDK tools을 다운받아야 합니다. Android Emulator Android SDK.. 2022. 7. 9.
반응형

loading