Android
-
Jetpack Compose 이미지 blur 처리하기Android 2023. 3. 6. 22:27
안녕하세요. 안드로이드 12기 김현국입니다. 프로젝트를 진행하면서, 이미지를 흐리게 처리해야 하는 부분이 생겨서 jetpack compose를 이용하면서 이미지를 blur 처리하는 방법을 공유하면 좋을 것 같아서, 이미지 블러 처리에 대한 글을 작성하게 되었습니다~!. 제가 최종적으로 만들려고 하는 카드는 다음과 같습니다. 하단에 이미지가 blur 처리되어 있는데요. 이것을 compose로 구현하기 위해서는 어떻게 구현을 해야 하는지 알아보도록 하겠습니다. API 31 이전까지는 Render Script를 사용하여 Blur 처리를 할 수 있었습니다. val bitmap = BitmapFactory.decodeResource( LocalContext.current.resources, R.drawable.y..
-
Android Unit Test that uses StateFlow and CoroutineAndroid 2023. 3. 6. 22:22
안녕하세요 안드로이드 12기 정민지입니다. 테스트 코드는 좋은 프로그램을 만들기 위한 필수적인 과정인 것 같습니다. 하지만 한편으로는 추가로 시간을 써야 한다는 점과 기능개발에 비해 당장 눈에 보이는 성과가 적은 느낌이어서 지금까지 테스트 코드 작성을 미루고 있었는데요… 이번 글을 통해서 Coroutine(StateFlow)를 사용하는 Android Unit Test 방법과 전체적인 흐름을 알아보려고 합니다! ♡⁺◟(●˙▾˙●)◞⁺♡ 본격적으로 시작하기 전, 테스트 코드를 왜 작성해야 하는지 다시 한번 생각해볼까요?! 💕 테스트 코드를 작성해야 하는 이유 코드의 결함을 사전에 방지하고 작성한 코드에 대해 자신감을 얻을 수 있습니다. 테스트 코드는 모든 상황에 대해 작성하기 때문에, 생각하지 못했던 결함을..
-
Android AdMob Native AdAndroid 2023. 3. 6. 21:07
안녕하세요 MashUp 11기 양민욱입니다 :) 좋은 앱 서비스를 완성했다면 그다음 고민은 수익 모델이죠. AWS 등 클라우드 서비스를 통해 서버를 구축했다면 다달이 나오는 서버 비용을 무시할 수 없기 때문이에요… 그렇기 때문에 우리 Android 개발자들은 Admob 광고 SDK를 앱에 잘 녹여들 수 있게 고민을 시작해야 합니다. 최근 Admob 네이티브 광고를 개인 프로젝트에 적용하느라 아주 고생을 많이 했습니다. 라이브러리 자체를 적용하는 것은 어렵지 않았지만 우리 프로젝트 앱들은 모든 코드가 Activity class 하나 파일에 들어가 있는 형태는 아니잖아요? 여러 가지 다양하고 복잡한 구조로 구성되어 있는 데, 공식 문서에서 소개해준 코드는 간단하게 적용한 방법뿐이고 커스텀하게 이용할 수 있는..
-
SDK를 어떻게 설계하고 개발했는가Android 2023. 3. 6. 21:03
개요 기존에 내가 하던 업무는 하이브리드 앱 개발을 위한 API를 설계하고, 제공하는 것이었다. 어쨌거나 유지보수이기 때문에 일은 늘 비슷했다. (어떻게든 구조를 개선해 보고자 노력했지만 혼자만의 노력이었다는 후문이^_ㅠ) 그러던 중 굉장히 갑작스럽게 SDK를 기획, 설계, 개발, 테스트까지 해야 하는 상황이 되었다. 그것도 상반기에 하나, 하반기에 하나 총 두 건이나… 유경험자나 인력은 당연히 없었기 때문에 바닥부터 시작해야 했다. 그래서 이 글은, SDK를 위해 북도 치고 장구도 친 삽질기이다. 설계부터 막막해요 안드로이드 개발자라면 새로운 프로젝트 설계 시 이미 만들어진 패턴(MVC, MVP, MVVM 등) 중 프로젝트에 적합한 패턴을 적용한다. 그리고 나 또한, 첫 번째 SDK를 설계할 때 MVV..
-
Clean Architecture - Use case in AndroidAndroid 2023. 3. 6. 20:49
안녕하세요:) 안드로이드 팀 10기 유희진입니다. (꾸벅) 이번 뀨니뀨니와 아이들 안드로이드 팀에서 들어만 보았던 Clean Architecture를 적용해보았습니다. 적용하면서, 아예 처음 들어보았던 레이어가 있었는데요, 바로 UseCase 입니다. 네 녀석 누구더냐!!? 진호님께서 유즈케이스레이어에 대해서 설명해주실 때 제가 한 대답이 아직도 생각나네요. “(띠용) 그.. 소프트웨어공학에 UML에 나오는 유즈케이스 말하는건가요..?” 하지만 결국 그 유즈케이스가 이 유즈케이스가 맞더라구요!?!? Use case란? In general Use case란 만들고 있는 서비스를 사용하는 유저가 이 서비스(또는 시스템)을 통해 하고자 하는 것을 말한다고 합니다. 예를 들어, ‘음식점’이라는 서비스가 있다고 ..
-
Jetpack Compose 를 도입하기 전에 알아야할 6가지Android 2023. 3. 6. 20:43
Jetpack Compose는 구글에서 개발한, 모던한 안드로이드 개발을 위한 UI Toolkit 입니다. 컴포즈는 기존의 View System 대비 보다 적은 코드로 네이티브 UI 를 구축할 수 있게 해줍니다. 최근 개발 생태계에서는 선언형 프레임워크가 주목받고 있습니다. React, SwiftUI, Flutter, Jetpack Compose 등 다양한 플랫폼에서 마크업이 아닌 선언형으로 UI 를 구축하는 방식에 대해 채택하고 있는 것이 그 증거입니다. 안드로이드는 태생부터 xml 기반의 레이아웃 구성을 기반으로 UI 를 구축해왔기 때문에 새로운 패러다임인 Jetpack Compose 로 전환하는 것이 꽤나 큰 변화인데요. 만약 Jetpack Compose 로의 마이그레이션을 검토하고 계시다면, 혹은..
-
Airbnb Mavericks 살펴보기Android 2023. 3. 6. 20:40
안드로이드 앱을 개발하다가 보면, 현재 화면에 필요한 데이터들을 어떻게 관리하는게 좋을까 하는 고민거리가 생깁니다. 데이터들은 이전화면에서 받아온 extra 일수도 있고, SQLite/Preference/Server api 등 각기 다른 DataSource에서 가지고 올 것입니다. Activity / Fragment의 전역변수로 가지고 있거나, ViewModel의 LiveData 형태 등등 다양한 형태로 저장을 하고 있습니다. 하지만, 특정 시점에 어떤 데이터를 가지고 있는지, 반대로 데이터만 보고 사용자가 어떤 행동을 해왔었는지를 추적하고 싶은 요구사항이 생겼을 경우에 손쉽게 해결할 수 있을까요? 혹은, 이벤트처리 / 데이터 처리를 좀 더 손쉽게 할 수 있는 방법이 있지 않을까요? 해서 등장한 개념인 ..
-
Transformation map과 switchMapAndroid 2023. 3. 6. 12:53
LiveData를 조금 더 유연하고 확장성 있게 사용하는 방법을 알아봅니다. LiveData 먼저 Transformation.map과 Transformation.switchMap에 대해서 알기 전에 알아두어야 할 것이 있습니다. 바로 LiveData와 MediatorLiveData 입니다. 먼저 올라온 포스트에 준비님께서 LiveData의 장점을 아주 잘 설명해주셨는데, 그 장점중에서 LiveData가 Inactive 상태, Activity가 Backstack에 있는 듯한 상태에서는 LiveData의 이벤트를 받지 않는 것에 대해서 부터 이야기 해보겠습니다. LiveData는 onActive()와 onInActive()라는 메소드를 가지고 있는데, 이는 활성화된 옵저버가 0과 1사이로 변하는 것을 알림 ..