Android
-
Infinite Scroll with Paging LibraryAndroid 2023. 3. 7. 00:00
안녕하세요. 안드로이드팀 12기 김현수입니다. 저는 무한스크롤을 ScrollListener로 원래는 구현했었는데 이번에 Android Paging Library를 공부하여서 Paging을 사용한 무한스크롤을 구현을 포스팅하고자 합니다. Jetpack Paging Library Android Jetpack 에서는 페이징을 위한 라이브러리를 제공합니다. Paging은 구글에서 권장하는 Android 앱 아키텍처에 맞게 설계되어 있으며, 다른 Jetpack 컴포넌트와 잘 동작할 수 있도록 설계되어 있습니다. 페이징 라이브러리를 사용하여 얻을 수 있는 이점은 다음과 같습니다. 페이징된 데이터의 메모리 내 캐싱. 이렇게 하면 앱이 페이징 데이터로 작업하는 동안 시스템 리소스를 효율적으로 사용할 수 있습니다. 요청..
-
ContentObserver 알아보기Android 2023. 3. 6. 22:29
개요 타 패키지의 DB 값을 ContentProvider 로 읽어오는 로직 개발 중 DB 값이 변경되었을 때의 이벤트를 수신하고 싶었다. 가장 쉽게 구현하는 방법으로는 DB 변경을 알려주는 Intent 규격을 하나 생성하는 것이겠지만, 구글링을 통해 내가 원하는 기능을 Android 플랫폼에서 자체적으로 제공한다는 사실을 알아냈다! (나만 몰랐던 이야기…?) 단, ContentObserver는 Oreo 이상에서만 동작한다. Oreo 미만 단말에서는 Intent 를 사용해야 하겠지요? ContentObserver 가 뭔데? 이름 그대로 ‘Content를 관찰’하다가 변경이 생겼을 때 알려주는 친구다. 즉, 우리는 변경을 관찰하고 싶은 URI 를 등록하기만 하면 된다. BroadcastReceiver 사용할..
-
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 로의 마이그레이션을 검토하고 계시다면, 혹은..