mash-up
-
MotionLayout을 활용하여 간단한 Animation 만들기Android 2023. 3. 4. 02:34
최근 디자인 개편 중 자연스러운 애니메이션을 적용해야 하는 업무가 생겼습니다. CollapsingToolbarLayout과 비슷하지만 6개의 뷰 위치/노출 처리가 필요한 상황이었습니다. 2개 이상의 뷰를 제어하는 처리라 CollapsingToolbarLayout으로는 해결할 수 없어 MotionLayout을 활용해야 했습니다. 그래서 이번 포스팅은 MotionLayout을 알아보고 정말 간단한 Animation 만들기입니다 :) MotionLayout MotionLayout은 Google I/O ‘18에 처음 도입되었으며 이후 많은 개선을 거치고 있습니다. 사실 MotionLayout은 완전히 새로운 기능으로 도입된 것은 아니고, 원래 ConstraintLayout에서 애니메이션 효과를 주기 위해 사용한..
-
RecyelrView Anti PatternsAndroid 2023. 3. 4. 02:24
안녕하세요. 메시업 안드로이드 10기 이두한입니다. 이번엔 Android Weekly에 올라온 RecyclerView-AntiPatterns 내용을 번역하여 포스팅해보겠습니다. 1. Initializing in bindView 첫 번째는 뷰를 완전히 재사용하지 않는 안티패턴입니다. RecyclerView에서 텍스트뷰 하나만을 보여주는 예제입니다. class RecyclerViewAdapter( private val onItemClick : (Data) -> Unit ) : RecyclerView.Adapter() { //..Other overrides private val itemList: List = //...DO STUFFS inner class MyViewHolder(val itemView: Vie..
-
Paging3:IntroductionAndroid 2023. 3. 4. 02:20
Paging3 적용기 Android Jetpack에 포함된 paging library가 이번에 paging3 베타버전을 배포했다고 해서 제 개인 프로젝트에 적용해 보았습니다 우선 시작하기 전에 제 프로젝트에 대해 설명드리겠습니다. 제 프로젝트는 NewsCalendar로 가까운 미래에 존재하는 사회적 이슈나 이벤트들을 미리 모아 보는 서비스 입니다. 이를 위해 Naver 검색 api를 사용했고 Room을 사용해 뉴스기사들을 Local DB에 저장해야 합니다. Naver Api에서 내려오는 Article을 정의해 보았습니다 @Entity(tableName = "articles") data class Article( @PrimaryKey @SerializedName("originallink") @ColumnI..
-
코루틴(Coroutine)의 일시 중단 함수 사용하기Kotlin 2023. 3. 4. 02:13
Composing Suspending Functions 이번 포스팅에서는 코루틴의 일시 중단 함수를 조합하여 활용하는 방법을 알아본다. ※ IntelliJ나 Android Studio가 설치되어 있지 않다면 Kotlin 공식 사이트에서 지원하는 온라인 IDE(Kotlin Playground)를 사용하여 아래 코드를 실행할 수 있다. Sequential by default 아래 코드는 어떤 유용한 기능(?) 두 가지를 순차적으로 실행 및 조합하여 결과를 내도록 구현되어 있다. fun main() = runBlocking { val time = measureTimeMillis { val one = doSomethingUsefulOne() val two = doSomethingUsefulTwo() printl..
-
Shared Element in NavigationAndroid 2023. 3. 4. 02:09
안드로이드 JetPack Navigation을 사용 중일 때 프래그먼트 간에 위와 같이 요소(이미지)를 공유하려면 어떻게 해야 할까요?안드로이드 공식문서에 이렇게 나와있습니다.FragmentNavigator.Extras클래스를 사용하면FragmentTransaction.addSharedElement()를 사용하는 것과 유사하게 공유 요소를 전환 이름으로 한 대상에서 다음 대상으로 매핑할 수 있습니다. 그런 다음 아래 예와 같이 추가 항목을navigate()에 전달하면 됩니다. FragmentNavigatiorExtras @Suppress("FunctionName") fun FragmentNavigatorExtras(vararg sharedElements: Pair) = FragmentNavigat..
-
CI / CDAndroid 2023. 3. 4. 02:06
안녕하세요! 10기 유희진입니다! 이번에 프로젝트를 진행하는 도중 팀장님께서 ‘ci 적용해 놨으니 머지하기 전에 ci test 다 돌고 success 하면 머지해 주세요’라고 하셨습니다. 저는 못알아들었고.. 그래서 ci에 대해서 공부한 내용을 적어보려고 합니다. Background 소프트웨어가 거대해지고 복잡해지면서 팀 단위로 개발하게 되었고, 그 과정에서 분업과 협업은 필수가 되었습니다. 이 과정에서 Merge 과정은 까다롭고 테스트하는데 큰 자원을 소비하게 됩니다. 이 문제를 해결하기 위해 도입되었습니다. 개발 브랜치가 일정 기간 이상 이용되면, 통합의 어려움은 커지고 충돌 해결에 들어가는 시간이 길어지고 오류 발생 위험이 커집니다. 이를 극복하고자 변동 내용의 반영 빈도를 늘리는 자동화가 등장합니..
-
RxAndroid (1)RxJava 2023. 3. 4. 02:03
6장. 1 - RxAndroid 소개 RxAndroid 소개 RxAndroid Observable : 비즈니스 로직을 이용해 데이터를 발행 구독자 : Observable에서 발행한 데이터를 구독 스케줄러 : 스케줄러를 통해 Observable, 구독자가 어느 스레드에서 실행될지 결정. 기존 안드로이드 문제점 안드로이드의 비동기 처리 및 에러 핸들링 수많은 핸들러와 콜백 때문에 발생하는 디버깅 문제 2개의 비동기 처리 후 결과를 하나로 합성하는 작업 이벤트 중복 실행. RxAndroid 장점 간단한 코드로 복잡한 병행 프로그래밍이 가능 비동기 구조에서 에러를 쉽게 다룸 함수형 프로그래밍 기법도 부분적 적용 가능 RxLifecycle 라이브러리 안드로이드와 UI 라이프 사이클을 대체한다기보다 구독할 때 발생..
-
Reactive - 디버그와 예외 처리RxJava 2023. 3. 4. 02:00
7장. 디버깅과 예외처리 지금까지 배운 Observable와 각종 리액티브 연산자를 활용하면 무엇이든 만들 수 있다고 한다고 해요. 하지만 상용 서비스처럼 간단하지 않고 복잡한 코드 로직들은 예상하지 못한 각종 버그와 오류가 발생할 가능성이 많아서 디버깅과 예외처리를 통해 보다 안정성이 있는 코드를 구현해야 합니다. 때문에 디버깅과 예외 처리는 필수로 적용해야 합니다. 디버깅 “함수형 프로그래밍은 함수의 부수효과를 없도록 하는 것이 원칙이지만 doOnXXX() 계열 함수는 오히려 부수 효과를 일으켜서 내가 작성하는 코드가 문제없는지 알아볼 수 있게 합니다.” 😒❓ doOnXXX() 계열 함수는 오히려 부수 효과를 발생?? static class Person { int age; String name; pu..