전체 글

안드로이드/안드로이드

Planfit onBoarding 페이지 클론 코딩 회고

현재 서비스 중인 Planfit이라는 앱의 onBoarding페이지를 클론 코딩해 보았습니다.지금까지 클론코딩을 할 때는 강좌나 책 등을 보며 해당 프로젝트를 클론코딩을 했었는데 이번에는https://wwit.design/2023/07/24/planfit/ Lifeplus한국의 UI/UX 모바일 패턴을 수집합니다.wwit.design해당사이트를 참고하여 만들었습니다. 화면만 보고서는 해당 화면이 어떻게 돌아가는지 알 수 없었습니다. 그래서 해당 앱을 설치하고 어떻게 돌아가는지 관찰 후에 해당 화면의 흐름을 다이어그램으로 만들었습니다.다이어그램을 만들다 보니 wwit에 나오는 Planfit페이지는 iOS 환경에서의 이미지라는 것을 알게 되었습니다. 그렇다고 안드로이드 기기에서의 모드화면을 캡처하고 해당 화..

안드로이드/AAC(Android Architecture Components)

[AAC] Paging 정의와 적용

정보를 점진적으로 가져오는 이 프로세스를 페이징이라고 하며 각 페이지는 가져올 데이터 청크에 상응합니다.페이지를 요청하려면 페이징 되는 데이터 소스에는 필요한 정보를 정의하는 쿼리가 필요한 경우가 많습니다. 이 Paging 라이브러리는 앱에서 빠르고 효율적으로 페이징을 할 수 있도록 도와줍니다.  Paging 라이브러리의 핵심 구성요소는 다음과 같습니다.PagingSource: 특정 페이지 쿼리의 데이터 청크를 로드하는 기본 클래스입니다. 데이터 레이어의 일부이며 일반적으로 DataSource 클래스에서 노출되고 이후에 ViewModel에서 사용하기 위해 Repository에 의해 노출됩니다.PagingConfig: 페이징 동작을 결정하는 매개변수를 정의하는 클래스입니다. 여기에는 페이지 크기, 자리표시..

안드로이드/AAC(Android Architecture Components)

[AAC] Navigation - setupWithNavController

안드로이드 공식문서에따르면 Navigation라이브러리에서는 여러 UI 패턴을 지원합니다. 이말은 즉 Navigation라이브러리를 이용하면 여러 UI화면을 구현할수 있다는 이야기가 됩니다.이번 포스팅에서는 setupWithNavController를 이용하여 UI화면을 구현하는 방법을 알아볼까 합니다. setupWithNavController 메서드는 오버로딩되어있어 여러 형태를 가집니다. 파라미터의 형태가 달라질뿐 이메서드의 용도는 같습니다. 바텀네비게이션처럼 메뉴를 지니는 네비게이션 뷰를 NavigationHost의  NavController와 연결하여 navGraph의 fragment의 id와 menu의 id가 같을경우 해당 fragment로 이동되게 만들어줍니다. 이렇게 만들면 코드가 줄어들 뿐만..

안드로이드/AAC(Android Architecture Components)

[AAC] Navigation 기능 구현 - 딥 링크

안드로이드 Navigation은 여러 기능을 지원합니다. 오늘은 그기능중 하나인 딥 링크를 구현해보도록 하겠습니다. 그전에 딥링크를 간단하게 알아봅시다 딥링크{scheme}://{host_path}딥링크는 일반적으로 아래와 같이 스키마(scheme)와 호스트(host) 및 경로(path)의 두 부분으로 나뉘어져 있습니다. 이러한형식은 평소 웹페이지에 접속할때 자주 볼수 있습니다. 딥링크라는 개념은 모바일과 웹의 구분없이 사용되는 개념입니다. 다만 웹의 특성상 링크가 공개되어있어 대부분 딥링크를 사용하기 때문에 특별히 딥링크라고 부르지는  않습니다. 웹처럼 링크가 공개되어있지 않은 모바일에서 이러한 딥링크를 어떻게 동작할까요?초기에는 Traditional Deep Links 형태 였습니다 이방식은 Deep..

안드로이드/AAC(Android Architecture Components)

[AAC] Navigation의 정의와 적용

안드로이드에서 화면을 전환하는 방법은 여러 가지가 있습니다.쉽게 생각하는 방법은 액티비티를 여러 개 사용하여 해당 액티비티끼리의 이동으로 화면의 전환을 보여주는 방법이 있습니다. 이경우 Intent를 통하여  이동작을 진행하는데 화면의 전환할 때 공유하는 View가 필요할 때가 있습니다. 이때 데이터를 보내준다면 공유를 할 수 있으나 화면전환 시의 부자연스럽고 해당 동작을 구현해야 된다는 단점이 있습니다. 이때 Fragment를 사용한다면 액티비티에서 해당 화면만 전환하게 되니 좀 더 자연스럽고 손쉽게 해당 화면을 구현할 수 있습니다. Fragment의 연결하는 방법은 이러한 단점을 해결할 수 있지만 코드로 구현돼 있고 어떻게 진행이 되는지 한눈에 들어오지는 않습니다. 이때 Navigation을 사용한다..

안드로이드/AAC(Android Architecture Components)

[AAC] Lifecycle 정의와 활용

안드로이드에서 생명 주기는 매우 중요합니다. 앱의 활성 상태를 알아야 UI나 동작 등의 작업을 할 수 있기 때문입니다. 액티비티나 프래그먼트의 경우, onCreate 메서드나 onStop 메서드와 같이 해당 상태에 따라 호출되는 메서드가 있습니다. 하지만 수명 주기의 현재 상태에 따라 UI와 다른 구성 요소를 관리하는 호출이 너무 많이 발생하면 여러 컴포넌트를 수명 주기 메서드에 상당한 양의 코드를 배치하게 되어 유지하기 어려워집니다. 또한, 장기 실행 작업을 진행해야 하는 경우 onStop() 메서드가 onStart() 전에 종료되어 구성 요소가 필요 이상으로 오래 유지되는 경합 상태가 발생할 수 있습니다. 이를 해결하기 위해 안드로이드에서는 androidx.lifecycle을 지원하고 있습니다. Li..

안드로이드/AAC(Android Architecture Components)

[AAC] LiveData의 정의와 사용

Android 개발에서 데이터의 변경을 감지하고 이에 따라 UI를 업데이트하는 것은 매우 중요합니다. 이를 위해 다양한 관찰 가능한 데이터 홀더 클래스가 존재하며, 그중에서도 LiveData는 매우 유용한 도구입니다. 이번 글에서는 LiveData의 장점과 특별한 기능, 그리고 실제 사용 예제를 통해 이를 사용하는 상황을 알아보겠습니다. LiveData란 무엇인가?LiveData는 Android Architecture Components(AAC)의 일부로, 관찰 가능한 데이터 홀더 클래스입니다. 데이터의 변경을 감지하고, 이를 통해 로직을 수행할 수 있게 합니다. 최근에는 LiveData 외에도 Flow와 같은 관찰 가능한 데이터 홀더들이 있지만, LiveData만의 특별한 장점이 있습니다. Androi..

안드로이드/AAC(Android Architecture Components)

[AAC] DataBinding 고급 기능

DataBinding에는 여러 고급기능이 있습니다. 오늘은 그 기능들을 정리해 볼까 합니다. 표현식DataBinding에서는 xml에서 단순히 객체에 접근하여 값만 가져오는것이 아닌 간단한 표현식이나 함수의 사용을 지원하고 있습니다. 연산자의 지원Mathematical, 수학+ - / * %String concatenation, 문자열 결합+Logical, 논리&& ||Binary, 2진 연산& | ^Unary, 단항 연산+ - ! ~Shift, 쉬프트 연산 >> >>> Comparison, 비교 연산자== > = Grouping ()Cast  Array access, 배열 접근[] Ternary operator, 삼항 연산자?:널 병합 연산자??  이밖에도 String.valueOf() 같은 Jav..

안드로이드/AAC(Android Architecture Components)

[AAC] DataBinding의 정의와 적용

AAC 중 DataBinding에 관하여 포스팅을 해볼까 합니다. DataBinding 드로이드 애플리케이션에서 UI 구성 요소를 애플리케이션 데이터 소스에 결합할 수 있는 기술입니다. 이 기능을 사용하면 XML 레이아웃 파일에서 직접 데이터 객체에 접근할 수 있으며, 코드의 간결성과 유지보수성을 크게 향상시킬 수 있습니다.  이렇게 설명한다면 사람들은 ViewBinding과 무슨 차이가 있냐고 의문을 가질수있습니다. 이 둘의 차이는  XML 레이아웃 파일에서 직접 데이터 객체에 접근할 수 있다는 점입니다.  이는 큰차이입니다. ViewBinding의 장점은 더 이상 View를 findViewById를 통하여 가지고 올필요가 없어진 것입니다. 이것만으로 코드의 양이 줄어 좀 더 간결하고 성능의 향상을 볼..

안드로이드/AAC(Android Architecture Components)

왜 앱개발자 공고 AAC사용 경험을 우대할까?

안드로이드 앱 개발자 공고를 보면 우대사항으로 'AAC 경험'이라는 항목을 종종 볼 수 있습니다. 그렇다면 이 AAC는 무엇일까요?AAC란 무엇인가?AAC는 Android Architecture Components의 약자입니다. 이는 안드로이드 앱 개발 시 통일성과 코드 감소 등의 여러 장점을 제공하는 Jetpack 라이브러리 모음 중 하나입니다. AAC에는 DataBinding, Lifecycles, LiveData, Navigation, Paging, Room, ViewModel, WorkManager와 같은 요소들이 포함되어 있습니다. 이들은 앱의 구조나 디자인을 설계할 때 큰 도움을 줍니다.  DataBinding은 ViewBinding에 추가로 xml에서도 코드에 접근하여 해당 값들을 사용할수있..

감자씨앗
코딩과 게임