페스타고 인기 축제 목록의 중첩된 페이지를 어떻게 개발했는지 공유하려고 합니다. 디자인은 다음과 같습니다. 이는 크게 두 가지로 나누어 생각해볼 수 있습니다. 앞으로 이 부분을 ForegroundPager, BackgroundPager 라고 칭하겠습니다. 1. ForegroundPager : 화면 앞 부분에서 페이지를 넘길 수 있고 이전, 이후 아이템을 미리보기 가능2. BackgroundPager : 앞 페이지가 선택되면 변경되는 배경 부분 Foreground 부분은 ViewPager, Background 부분은 ImageView 를 사용하면 되겠다 생각했습니다. ForegroundPager 페이지 형태의 화면을 구성해야 할 때 다음과 같은 보기가 있습니다. Android View : ViewPag..
Android
페스타고가 출시되었습니다!어느 대학 축제에 어떤 아티스트가 오는지,어떤 아티스트가 어느 대학 축제에 가는지,궁금하다면...지금 바로 페스타고! [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 이 있다. 코틀린 클래스는 자바 바이트코드로 컴파일 되기 때..
안드로이드 테스트 피라미드 피라미드를 올라갈수록 비용 증가, 아래로 내려갈수록 더 많은 테스트가 작성되어야 한다. 안드로이드 테스트를 작성해 봤거나 그렇지 않더라도 두 가지 패키지를 보았을 것이다. androidtest : 실제 또는 가상 디바이스에서 실행할 테스트를 작성한다. JVM 만으로는 검증할 수 없는 테스트가 포함된다. test : 로컬 JVM에서 실행되는 테스트이다. 단위 테스트를 작성한다. 안드로이드 의존성이 있는 테스트는 모두 androidTest 하위에 위치해야 하는걸까? UI 로직을 검증하기 위한 테스트를 단위 테스트로 만들 수는 없을까? Robolectric Robolectric을 사용하면 JVM 내에서 "시뮬레이션된" 안드로이드 환경에서 테스트가 실행된다. 즉, 한마디로 안드로이드 ..