Intro목록이 중첩된 복잡한 디자인을 개발해야할 때가 많습니다. - 상품 목록에서 최근 본 상품을 상단에 보여준다.- 상품 중간에 광고를 넣는다.- 판매자의 다른 상품들을 보여준다. 이런 경우 복잡한 화면을 어떻게 구현할지 고민해 봐야합니다.먼저 View System 에서는 어떻게 개발해야하는지 알아봅시다. 2024 Google I/O Extended in Busan 에서 발표한 글을 토대로 정리한 내용입니다. 예시 앱을 만들면서 이해해봅시다. GDG Busan 의 앱을 한 번 만들어 보겠습니다. 아래와 같이 디자인하였습니다. 이 화면은 다음과 같은 순서로 구성되어있습니다. - 최 상단 배너- 운영진 목록 (Organizers)- 이벤트 목록 (Past Events) 이제 Android View Sy..
Android
페스타고 인기 축제 목록의 중첩된 페이지를 어떻게 개발했는지 공유하려고 합니다. 디자인은 다음과 같습니다. 이는 크게 두 가지로 나누어 생각해볼 수 있습니다. 앞으로 이 부분을 ForegroundPager, BackgroundPager 라고 칭하겠습니다. 1. ForegroundPager : 화면 앞 부분에서 페이지를 넘길 수 있고 이전, 이후 아이템을 미리보기 가능2. BackgroundPager : 앞 페이지가 선택되면 변경되는 배경 부분 Foreground 부분은 ViewPager, Background 부분은 ImageView 를 사용하면 되겠다 생각했습니다. ForegroundPager 페이지 형태의 화면을 구성해야 할 때 다음과 같은 보기가 있습니다. Android View : ViewPag..
페스타고가 출시되었습니다!어느 대학 축제에 어떤 아티스트가 오는지,어떤 아티스트가 어느 대학 축제에 가는지,궁금하다면...지금 바로 페스타고! [Android]https://play.google.com/store/apps/details?id=com.festago.festago 페스타고 - 대학 축제, 가수, 공연, 아이돌 - Google Play 앱전국 대학 축제 검색 플랫폼 페스타고, 대학 축제를 더욱 즐겁게!play.google.com [iOS]24.05.15 coming soon.. 오늘은 페스타고 개발 중 개발 서버와 연동하고 생긴 문제를 어떻게 개선하였는지 전달하고자 합니다. 평화롭게 개발하던 중.. FakeRepository 에서 DefaultRepository 로 의존성을 변경해주었는데....
들어가기 전에 안드로이드에서 DataStore 를 사용할 때 암호화, 복호화를 어떻게 처리해야할지 고민이라 찾다가 이 영상을 먼저 보는게 좋다고 하길래 정리해봅니다. FULL Guide to Encryption & Decryption in Android (Keystore, Ciphers and more) https://www.youtube.com/watch?v=aaSck7jBDbw Encryption & Decryption with KeyStore 예를 들어서 비밀번호를 매번 기억해서 입력하기 힘드니깐 자동 저장한다고 생각해봅시다. 그럼 핸드폰에 접근해서 누군가 비밀번호를 볼 수도 있겠죠..? 그 경우를 방지해서 중요한 정보를 저장할 때 Key 를 사용해 저장합니다. 데이터를 읽거나 쓸 때 Key 가 있..
시작하기 전에 현재 페스타고 앱은 토큰 관리를 EncryptedSharedPreferences 로 하고 있다. 그러나 공식 문서는 SharedPreferences 를 DataStore 로 이전할 것을 권장한다. 이전하기 전에 DataStore 가 무엇인지 공부해보자! 이 글은 안드로이드 공식 문서를 바탕으로 작성되었습니다. https://developer.android.com/topic/libraries/architecture/datastore?hl=ko https://developer.android.com/codelabs/android-preferences-datastore?hl=ko DataStore 란? DataStore 는 Protocol Buffer 를 사용해 Key - value 쌍 또는 유형..
Handling Scrolls with CoordinatorLayout 글을 보고 적용했습니다. https://guides.codepath.com/android/handling-scrolls-with-coordinatorlayout CoordinatorLayout 이란? CoorinatorLayout 은 구글의 Material Design scrolling effect 를 다루는 능력을 향상시켜준다. 커스텀 애니메이션 코드를 작성하지 않고도 많은 방법을 제공한다. - Snakbar 가 생길 때 Floating Action Button 이 올라갔다 내려갔다 하게 만들 수 있다. - 메인 컨텐츠를 위해 Toobar 나 header space 를 확장하거나 축소할 수도 있다. - 확장 혹은 축소시키고 뷰의 비..
그동안 당연하게 써 온 Repository 패턴인데 이론적으로 잘못 이해하고 있었다. 추상화해서 갈아끼우기 좋은 구조로 만들고 계층간 분리하는 것까지 Repository 패턴인 줄 알았는데 아니었다. 따라서 오늘은 안드로이드 공식문서에서 말하는 Repository 패턴에 대해서 확실히 알고 넘어가자. Repository 저장소 패턴은 데이터 레이어를 앱의 나머지 부분에서 분리하는 디자인 패턴 이다. 데이터 레이어는 UI 와는 별도로 앱의 데이터와 비즈니스 로직을 처리하는 부분이다. Repository 는 앱의 나머지 layer 에서 이 데이터에 액세스할 수 있도록 일관된 API를 노출한다. 데이터 레이어에는 네트워킹 코드, Room 데이터베이스, 오류 처리, 데이터를 읽거나 조작하는 코드 등이 포함. 즉..
테스트, 아키텍처, 다 중요하지만 간과하는 부분이 있었다. 안드로이드 개발자라면 요구사항에 맞는 View 를 마음껏 그려내고 지연을 줄여 최적화 할 수 있어야한다. 오늘은 뷰가 그려지는 과정에 대해 이해해보자. View Lifecycle https://proandroiddev.com/the-life-cycle-of-a-view-in-android-6a2c4665b95e https://medium.com/android-deep-dive-study/introduce-android-ui-rendering-principle-and-view-optimization-1-f593820c7a50 Custom View 를 만들다보면 View Lifecycle 를 마주할 때가 있다. View Lifecycle 에 대해 알..
Festago 를 개발하면서 ViewModel 의 UiState 및 Event 를 감지하기 위해 LiveData 를 사용했다. 이상적으로 ViewModel 은 Android 를 알아선 안된다. 테스트 가능성, 메모리 누수 안전성, 모듈성을 향상시킨다. 참고: AndroidDevelopers 블로그 https://medium.com/androiddevelopers/viewmodels-and-livedata-patterns-antipatterns-21efaef74a54 이를 이유로 안드로이드 의존성을 갖는 LiveData 를 사용하던 기존 코드들을 Kotlin 의존성을 갖는 Flow 로 Migration 해보기로 했다. StateFlow 와 SharedFlow 에 대한 이론적인 글은 다음 글을 참고해주세요...
자동 DI 블로그 글을 쓰다가 리플렉션에 대한 정리를 먼저 하고 넘어가는게 좋다고 판단되어 주제로 선정하였다. 자동 DI 를 구현하려면 리플렉션을 먼저 알아야한다. Reflection 이 뭐지? kotlin in Action 에 따르면 실행 시점에 동적으로 객체의 프로퍼티와 메서드에 접근할 수 있게 해주는 방법이다. 이는 성능을 떨어뜨리며 객체지향을 무시해버리기 때문에 개발할 때 보통 사용하지 않는 방법이다. (아래 사용 방법을 보면 이해할 것이다.) 하지만 라이브러리 등을 구현하려면 꼭 필요한 경우도 존재한다. 코틀린에서는 두 가지 서로 다른 Reflection API 를 사용할 수 있는데 자바 Reflection, 코틀린 Reflection 이 있다. 코틀린 클래스는 자바 바이트코드로 컴파일 되기 때..