전체 글 (32) 썸네일형 리스트형 NavigationDrawer와 Toolbar 연동하기 (이전 작성글) 이전에 만든 NavigtaionDrawer는 Toolbar가 없이 화면의 왼쪽 끝지점을 스와이프하여 서랍을 열고 닫을 수 있었다. Toolbar를 추가하고 Toolbar의 햄버거 아이콘을 통해서 Drawer를 열고 닫을 수 있도록 만들어보자. NavigationDrawer는 이름에서 알 수 있듯, Navigation 기능과 크게 관련되어 있다. 그래서 App내에서 사용하는 navigation 방식도 따져보아야한다. 이번에는 Navigation Component를 사용하여 네비게이션을 구성할 계획이므로, 먼저 Navigation Component + Toolbar의 연동을 살펴보자. NavigationComponent는 NavController를 통해서 네비게이션 동작을 실행한다. 그러므로.. Toolbar와 ActionBar의 차이점 안드로이드에서는 Toolbar에 대한 동작을 검색하다보면, ActionBar와 Toolbar를 섞어서 사용하는 답변을 많이 볼 수 있다. 이번에 두 가지 위젯의 차이점을 살펴보자. ActionBar와 Toolbar의 차이점 패키지명을 확인해보면 ActionBar는 더 상위 패키지인 android.app에 속한 것을 확인할 수 있다. 실제로 ActionBar는 Activity에 포함되어 있는 기능이다. ActionBar는 Android API level 11부터 지원된 아주 오래된 API이다. 공식문서를 살펴보면, "A primary toolbar within the activity that may display the activity title, application-level navigation aff.. Toolbar에 메뉴 추가하기 안드로이드 툴바에는 메뉴를 추가할 수 있습니다. 위 그림에서 점 세개로 표현된 이미지를 클릭하면 등록된 XML 메뉴 리스트를 보여줍니다. 툴바에 메뉴를 inflate 시키는 방법을 검색해보면 대부분 액티비티에서 onCreateOptionsMenu(menu: Menu?)메소드를 통해 메뉴를 툴바에 입히고(inflate), 선택된 메뉴에 대한 이벤트 처리는 onOptionsItemSelected(item: MenuItem): Boolean을 통해서 처리하는 것을 볼 수 있습니다. 이러한 방법은 툴바를 액티비티에 속해 있는 ActionBar로 취급할 때 사용되는 방법입니다. 만약 툴바를 액티비티 내에 종속시키지 않고, 각 프래그먼트마다 별개로 구현한다면 메뉴를 구성하기 위한 위 메소드들을 프래그먼트에서 가로채.. Android Abstraction Between Packages 아래는 Android Jetpack How to smartly use fragment in your UI(Google I/O 2018) 발표의 스크립트 중 일부입니다. So before we talk about that, I think it's kind of important to go into a little bit about the package layering involved in the Android framewokr, specifically android.widget versus android.app Now, android.widget is really kind of designed to hold all the mechanism for your UI. That means that this is .. (Part.2) 리사이클러뷰에서 여러가지 타입의 데이터 사용하기 목표 하나의 어댑터에서 여러가지 타입의 데이터를 표시할 수 있다. 리사이클러뷰의 아이템을 접을 수 있다. 구조 이전에 구현했던 어댑터는 어댑터 클래스 내부에서 사용자에게 보여지는 그릇에 해당하는 ViewHolder, 그리고 음식에 해당하는 Data를 모두 관리한다. 모델과 뷰를 분리하는 패턴의 관점에서보면 어댑터가 너무 많은 기능을 담당하고 있어서 비대해지는 것이라고 볼 수 있다. 그래서 Adapter는 기존 ViewHolder를 생성하고 데이터를 생성된 ViewHolder에 담는 역할을 수행하는 것으로 역할을 제한시키고, 데이터를 관리할 수 있는 Section이라는 개념을 추가한다. Section은 어댑터가 데이터를 다루기 위해 사용하는 클래스이다. ItemSection은 하나의 데이터를 담는 섹션 타.. (Part.1) 리사이클러뷰에서 여러 타입의 데이터 사용하기 목표 리사이클러뷰의 아이템을 접을 수 있는 기능 구현하기. 할 일(Task)의 수가 많아질 경우 원하는 할 일을 찾으려면 스크롤을 많이 해야하는 경우가 생긴다. Header를 사용해서 Task를 분류하도록 한다. Header를 클릭하면 하위에 속한 Task 아이템을 접을 수 있도록 한다. RecyclerView Adapter 어댑터의 기본 기능은 사용자에게 RecyclerView에 내용을 채워넣어 보여주는 역할이다. 여기서 내용(Data)는 음식에 비유할 수 있고, 뷰홀더는 음식을 담는 그릇이라고 생각해보자. 어댑터는 음식에 어울리는 그릇을 찾고, 음식을 담아서 고객에게 내보내는 직원의 역할을 한다. 어댑터 직원이 다루는 음식은 List 타입으로 다루어지며, onCreateViewHolder()와 onB.. Ketchup - 할일 관리 Todo 리스트 애플리케이션을 구현해나가면서 AAC(Android Architecture Component)를 적용해보는 프로젝트입니다. Ketchup은 할일을 미루지말고 Catch-up하자라는 의미에서 붙인 이름입니다. 마지막에 케첩 아이콘을 테마로 디자인 해볼 생각입니다. 😄 아직 개발진행중인 미완성 프로젝트입니다. Github 바로가기 개발하면서 공부한것을 기록한 블로그 링크 개발목적 - MVVM 아키텍쳐와 LiveData를 사용합니다. - Room 데이터베이스를 사용합니다. - Dagger를 사용해 DI 시스템을 도입합니다. - Notification의 동작을 이해합니다. - RecyclerView의 동작을 이해합니다. 아키텍쳐 - Model Repository 모듈을 도입해 데이터에 접근하는 유.. Dagger setup with WorkManager 목표 WorkManager를 사용하기 위해서 결정하고 제일 먼저 해야할 일은 Worker에 의존성 주입을 설정하는 일이다. 우리가 해야할 백그라운드 작업은 내일 할 일을 불러올 수 있어야하고, 알람을 등록할 수 있어야한다. 그러므로 TaskRepository와 AlarmUtils의 주입이 필요하다. Worker에 객체를 주입하기 위해서 필요한 설정을 알아보자. Dependencies 우선 WorkManager를 사용하기 위해서는 dependencies 추가가 필요하다 // WorkManager implementation "androidx.work:work-runtime:2.2.0" 이제 WorkManager, Worker, WorkRequest에 대한 정보들을 사용할 수 있다. Dagger에게 Worke.. 이전 1 2 3 4 다음