일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Android
- 안드로이드
- room
- hilt
- 코틀린
- 알림
- HTTP
- Coroutine
- recyclerview
- 알고리즘
- sqlite
- LiveData
- View
- BOJ
- CustomView
- 백준
- lifecycle
- onLayout
- Navigation
- Algorithm
- activity
- kotlin
- ViewModel
- DataBinding
- AppBarLayout
- notification
- onMeasure
- CollapsingToolbarLayout
- Behavior
- CoordinatorLayout
- Today
- Total
목록Navigation (9)
개발일지
Android에서 Jetpack Navigation Component를 사용할 때 Global Action을 RecyclerView ViewHolder에서 바로 findNavController를 사용하는 경우 종종 does not have a NavController set Exception이 발생한다. * Dialog에서 RecyclerView를 사용하는 경우 자주 발생한다. itemView.findNavController() 위에 문제를 발생하는 코드를 아래로 고치자. Navigation.findNavController(activity, R.id.nav_host) Hilt를 사용하여 DI 패턴을 적용하면 RecyclerViewAdapter에서 Activity나 Fragment를 쉽게 가져올 수 있다.
Notification Custom 사용자가 직접 Layout을 구성하여 RemoteView를 통해 Nofitication 템플릿을 만들 수 있습니다. * 보통 축소된 Notification은 64dp, 확장된 Notification은 256dp로 제한됩니다. RemoteViews를 만들고setCustomContentView를 통해 적용할 수 있다. * 확장된 CustomContentView는 setCustomBigContentView를 통해 적용할 수 있다. private fun createCustomContentView(): RemoteViews { return RemoteViews(context.packageName, R.layout.notification_content_view).apply { s..
Notification Action 알림을 빠르게 대응할 수 있도록 알림을 탭했을 때 작업을 추가 하거나 최대 3개의 Action을 추가할 수 있다. setContentIntent 알림을 탭 했을 때 PendingIntent를 통해 작업을 정할 수 있다. private fun createPendingIntent(message: Message): PendingIntent { return NavDeepLinkBuilder(context) .setGraph(R.navigation.navigation_main) .setDestination(R.id.actionFragment) .setArguments( Bundle().apply { putSerializable("message", message) } ) .cre..
ActivityNavigator에서 Transition을 설정하면 된다. 해당 코드를 Activity finish에 작성한다. override fun finish() { super.finish() ActivityNavigator.applyPopAnimationsToPendingTransition(this) } Git (예제소스) github.com/KangTaeJong98/Example/tree/main/Android/Navigation KangTaeJong98/Example My Example Code. Contribute to KangTaeJong98/Example development by creating an account on GitHub. github.com
Material Design Material Design에서 제공하는 요소들을 Navigation을 통해 쉽게 구현할 수 있습니다. Toolbar ... android:label을 통해 Toolbar의 Title을 설정할 수 있다. binding.toolbar.setupWithNavController(findNavController()) Toolbar의 setupWithNavController를 사용해서 지정할 수 있다. val appBarConfiguration = AppBarConfiguration(setOf(R.id.main, R.id.profile)) binding.toolbar.setupWithNavController(findNavController(), appBarConfiguration) 경..
Safe Args Navigation에서 데이터를 전달하는 Bundle 방식은 key-value 구조로 key값에 string을 입력하는 과정이나 value를 캐스팅하는 과정에서 개발자가 실수할 가능성이 있지만 Safe Args는 유형 안전성을 보장하므로 데이터를 탐색하고 전달할 때는 Safe Args를 사용하는 것이 좋습니다. Dependency build.gradle (Project) buildscript { repositories { google() } dependencies { def nav_version = "2.3.4" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } } build.gradle (..
Action Navigation에서 UI 대상간의 이동을 Action이라 하며 Action은 NavGraph에서 정의하고 NavController.navigate()를 사용해서 이동한다. => Activity간의 이동을 startActivity()로 이동하는 것과 같음 NavGraph에서 UI 대상을 정의할 때 넘겨 받을 Argument를 정의하고 Action을 정의할 때 Animation과 Pop Behavior 등을 정의한다. NavController 접근방법 Activity.findNavController(viewId: Int) Fragment.findNavController() View.findNavController() Animation Navigation의 장점으로 Action간의 Animat..
Navigation Navigation은 UI의 전환을 쉽게 도와주고 시각화 하는 Jetpack Architecture입니다. 기존의 Activity 중심의 UI 구성이 아닌 Fragment와 FragmentTransaction을 통해 UI를 구성하여 더 성능이 좋습니다. 구성 NavGraph : 탐색에 관련된 정보가 모여있는 XML 리소스입니다. UI 대상과, UI 탐색에 관한 정보가 저장됩니다. NavHost : 탐색 그래프에서 UI 대상을 표시하는 빈 컨테이너입니다. NavHostFragment로 표현합니다. NavController : NavHost에서 탐색을 관리하는 객체입니다. 장점 프래그먼트 트랜잭션 처리 기본적으로 '위로'와 '뒤로'작업을 올바르게 처리 (위로 버튼은 앱을 종료하지 않는다...