본문 바로가기

android

(39)
[Tip] ViewModel의 LiveData를 작성하는 방법 안녕하세요 허접샴푸입니다. 간단하게 Android ViewModel에서 LiveData를 작성하는 방법을 끄적여 봅니다. [예] 출처: https://classroom.udacity.com/courses/ud9012/lessons/da3967cc-ba85-4045-bb46-dea1c770fb8b/concepts/d6779adf-494a-484d-870c-1e054eabed11 우선 MutableLiveData는 말 그대로 "Mutable" 즉 변형이 가능한 LiveData로서 읽기 / 쓰기가 가능합니다. 그리고 그냥 LiveData는 읽기 전용입니다. 참고로 LiveData에서 get() = { } 형태의 코드는 Kotlin 의 Backing Property라고 불리는 속성입니다. (Backing Pro..
[소셜로그인] 안드로이드 애플 로그인(Sign in with apple) 구현하기 1편 안녕하세요! 허접샴푸입니다. 요새 통 바빠서 포스트를 작성하지 못했습니다. Android와 IOS 둘 다 개발하는 앱 개발자라면 소셜 로그인을 한 번쯤 구현해보셨을 것입니다. 아이폰 앱에서 '구글 로그인', '페북 로그인' 등의 소셜 로그인을 넣으려면 "Sign in with Apple"(애플 로그인)을 필수적으로 넣어야 합니다. 이 때문에 안드로이드에서도 필수적으로 구현하게 되었습니다. 왜냐하면 Iphone 사용자가 어떠한 앱을 '애플 로그인'을 통해 사용하다가 안드로이드 폰으로 바꾸었다고 가정해봅시다. 안드로이드 폰에서 그 앱을 다시 사용하고자 다운로드하였는데 '애플 로그인'이 구현되어 있지 않으면 자신의 계정 관련 데이터를 불러올 수 없기 때문에 매우 좋지 않은 User Experience 겠죠? ..
[배달의 민족] 따라만들기 8-2편 (Repository, ViewModel, MVVM) 안녕하세요 허접샴푸입니다~! 오랜만에 배달의 민족 따라 만들기 8편입니다! 이번 시간에 구현할 것은 안드로이드 앱 아키텍처 패턴의 일부인 Repository와 ViewModel을 작성해보겠습니다. Guide to app architecture https://developer.android.com/jetpack/docs/guide#common-principles 불러오는 중입니다... 위 문서를 보다 보면 제일 중요하게 봐야 할 것이 아래 그림입니다. Activity나 Fragment는 ViewModel에 의존하고 ViewModel은 Repository에 의존하고 Repository는 Room(Sqlite database library)이나 Retrofit 클래스와 같은 여러 다른 클래스에 의존합니다. 이..
[배달의 민족] 따라만들기 8-1편 (Navigation, BottomNavigationView) 안녕하세요 허접샴푸입니다~! 오랜만에 배달의 민족 따라 만들기 8편입니다! 이번 시간에 구현할 것은 Fragment + BottomNavigationView입니다. 이전까지는 아래 그림과 같이 Drawer을 구현하였었죠? 그런데 최신 "배달의 민족" 앱은 Drawer 대신 아래 오른쪽 그림과 같이 Bottom navigation View를 사용하더라고요? 제 개인적인 생각은 - 엄밀히 따지면, Bottom Navigation View가 아닌 커스텀 Layout으로 Bottom Tab을 만든 것 같습니다. 그런데 저희는 100% 따라 할 것이 아니고 느낌만 가져갈 것이기 때문에 일일이 모두 커스터마이징 하기보다는 이미 잘 만들어져 있는 view를 사용할 것입니다. 그것이 바로 BottomNavigation..
[Navigation] Android Jetpack Navigation + BottomNavigationView (2 / 2) 안녕하세요 허접샴푸입니다! Navigation 관련 2편입니다. 이번 편에서는 NavigationExtensions에 대해서 알아보고 MainActivity.kt 코드를 작성하도록 하겠습니다. 긴 말 없이 바로 이어나가도록 하겠습니다. [START] 일단 먼저 1편에서도 말씀드렸지만, Google Sample을 참고한 것이기 때문에, 자세한 구현은 저도 모르는 부분들이 있습니다. 그러나 설명할 수 있는 부분까지 설명하도록 하겠습니다. 참고 : https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample (1) NavigationExtensions.kt 복사 붙이기 위에 있는 NavigationE..
[Navigation] Android Jetpack Navigation + BottomNavigationView (1 / 2) 안녕하세요 허접샴푸입니다! Android Jetpack 라이브러리 중 하나인 Navigation에 대해서 알아보도록 하겠습니다. 최근 들어 안드로이드 앱들을 보면 모두 화면 하단에 메뉴가 있으며 중간 화면이 스위치 되는 Fragment + BottomNavigationView 형태를 하고 있습니다. (물론 옛날부터 그랬겠지만, 예전에는 정형화된 라이브러리가 없어서 Fragment 전환을 코드로 구현하는 것이 쉬운 일이 아니었습니다.) Google에서 2017년 Jetpack 및 Android Architecture Components를 출시하며 Navigation Component가 생겨났으며, Fragment 전환의 어려움을 조금이나마 덜 수 있게 되었습니다. 위 App을 보아도 모두 하단에 Botto..
Xml에서 tools는 도데체 무엇인가? 안녕하세요! 허접샴푸입니다. 이런저런 안드로이드 개발을 하다보면 xml 파일에 "tools"라는 놈을 본적이 있을 것입니다. 아래 사진처럼, MainActivity의 layout 파일인 activity_main.xml을 보다보면 xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity" 이런 것들을 볼 수 있습니다. 저도 몰랐으며 방금 알게 된 tools에 대해 알아보도록 합시다! [START] 참조 : https://developer.android.com/studio/write/tool-attributes 1) 일단 tools는 namespace이며 design-time (디자인 타임) 속성이라고 합니다. 2) 실제로 앱이 ..
[Android Core] Snackbar 파해치기 3편 안녕하세요! 허접샴푸입니다~! Snackbar에 대해 알아보겠습니다. 대망의 마지막편인 3편입니다. 이번 3편에서는 - SnackBar 과 Coorindatorlayout관의 관계 에 대해서 알아보도록 하겠습니다. 왜 CoordinatorLayout? Material Design 공식 사이트에서 아래와 같이 기술해 놓았습니다. NOTE: Snackbars work best if they are displayed inside of a CoordinatorLayout. CoordinatorLayout allows the snackbar to enable behavior like swipe-to-dismiss, as well as automatically moving widgets like FloatingAc..