Android Jetpack에 대해 Deep Dive 하기 위해 Sunflower 클론 코딩을 하기로 마음을 먹었다.시간이 날때마다 꾸준히 진행할 예정이다.Android Jetpack을 사용한Android 개발 모범 사례를 보여주는 정원 가꾸기 앱위와 같은 기술들이 적
build.gradle 에 ext 변수를 이용하여 한 공간에 버전을 정리해둔다.Dependency Setup@HiltAndroidApp 어노테이션 추가의존성 주입의 시작점을 지정하고 Application의 생명주기를 따르며,컴파일 단계에서 DI에 필요한 구성요소들을 초
SPA(Single-Page-Application) 구조하나의 Activity와 여러 개의 FragmentJetpack Navigation에서 제공하는 Bottom Navigation, Toolbar사용 xToolbar + ViewPager2 + TabLayout in
Theme.MaterialComponents.DayNight.NoActionBar 로 변경CoordinatorLayout : FrameLayout 특징을 가지며, 자식뷰에 behavior을 설정하여 다양한 움직임 및 애니메이션 상호작용을 구현할 수 있음ImageView
엑티비티에서 툴바를 선언하는 것이 아닌 ViewPagerFragment에 선언한다.(현재 Acitivity에서 Navigation에 첫페이지가 ViewPagerFragment로 설정되어있음)PagerAdapter각 Page index 선언class 밖에 const va
Room 1. Entity Table 정의 data class로 Plant Entity를 생성한다. @PrimaryKey : 기본키 지정 @ColumnInfo : 테이블 구성 필드 정의 2. DAO Plant 클래스를 위한 DAO(Data Access Ob
PlantListFragment에 있는 RecyclerView를 만들자. 그 전에 RecyclerView list item인 CardView를 커스텀하자. Custom CardView MaterialCardView를 부모뷰로 MaskedCardView 클래스를 생성
PlantListFragment 안에 있는 RecyclerView를 위한 어댑터를 생성해주자. 그리고, 리사이클러뷰에 ListAdapter와 DiffUtil을 활용해보자. DiffUtil? 간단하게 요약하자면 현재 데이터 리스트와 새로운 데이터 리스트를 서로 비교하여
Fragment에서 RecyclerView의 adapter를 연동해주자.Plant DB에서 Data를 가져와야 하기 때문에 ViewModel과 Repository를 생성해서 Room DB에 접근한다.Repository는 Singleton 패턴으로 생성되며, Room D
Garden Fragment에 내가 추가한 식물들을 관리하는 화면을 구성하자.RecyclerView와 비어있을 때 표현할 TextView와 Button의 부모인 LinearLayout을 선언한다. 뷰를 겹쳐야하기 때문에 FrameLayout을 사용했다.MaterialB
GardenFragment 화면을 구성해보자. Add Plant 버튼 클릭 시 PlantListFragment 화면으로 이동 > 이제 My Garden에 식물을 추가할 때 생기는 List를 만들어줘야한다. 그전에 필요한 Data class를 생성한다. Data c
PlantDetailFragment Plant List 아이템 클릭 시 상세 페이지로 이동하는 화면을 구성해보자. 먼저 data를 정의해준다. 여기서 callback 변수는 Callback interface에 매핑된다. 최상위 레이아웃으로는 CoordinatorLa