분류 전체보기

Tab과 ViewPager은 언제 사용되는가? Swipe해서 탭이 바뀌는 UI는 많은 앱에 쓰이며, 여러 페이지를 탭으로 구성해 사용 복잡도를 줄이기 위해 사용한다. 그림1과 같은 동작으로 Tab을 직접 클릭해서 Page를 이동할 수도 있으며, Swipe 동작을 통해 페이지를 이동할 수도 있다. 오늘은 이러한 UI를 만드는 방법에 대해 알아보고자 한다. 위 페이지를 만들기 위해서는 다음 단계들을 거쳐야 한다. Tab + ViewPager 만들기 위한 라이브러리 추가하기 Tab 목록 만들기 PagerState 선언하기 CoroutineScope 선언하기 TabRow 만들기 HorizontalPager 만들기 Compose로 Tab과 ViewPager 만들기 1. Tab + ViewPager 만들기 위한 ..
파사드 패턴이란? 파사드 패턴은 일련의 저수준 인터페이스들을 하나의 고수준 인터페이스로 묶어주는 패턴이다. 클라이언트 객체가 여러 저수준 인터페이스의 동작을 제어 하려면 여러 저수준 인터페이스의 메서드들을 일일히 호출해야 하는데, 파사드 패턴을 이용하면 고수준 인터페이스의 메서드 호출 만으로 한 번에 할 수 있게 된다. *파사드 패턴에서는 고수준 인터페이스를 저수준 인터페이스를 통합했다 해서 '통합 인터페이스'라고 부른다. 저수준 인터페이스를 바꾸기 위해서 다른 인터페이스를 건드리지 않고 통합 인터페이스의 코드만 건드리면 되므로 클라이언트 객체는 여러 저수준 인터페이스에 대해 의존성이 느슨해진다. 파사드 패턴을 쓰지 않았을 때의 문제점 예를 들어 우리가 커피를 만든다고 해보자. 커피를 만들기 위해서는 원..
Compose에서 ViewPager 만들기 Compose에서 ViewPager을 만들기 위해서는 Accompanist에서 제공하는 HorizontalPager을 사용해야 한다. Accompanist는 Jetpack Compose에서 자주 사용되는 View들을 사용하기 편하게 만들어놓은 라이브러리로 기존 안드로이에서 제공하던 ViewPager 또한 제공한다. 라이브러리 추가하기 accompanist에서 Pager용 라이브러리를 제공하는데 아래 둘을 앱 수준의 build.gradle에 추가해야 한다. implementation "com.google.accompanist:accompanist-pager:0.20.1" implementation "com.google.accompanist:accompanist-p..
커맨드 패턴 커멘드 패턴은 하나의 객체를 통해 여러 객체들에 명령(Command)을 해야 할 때 사용되는 패턴이다. 커멘드 패턴을 사용하면 요청을 캡슐화해서 커멘드 객체가 명령을 해야하는 객체들에 대한 의존성을 느슨하게 만들 수 있다. 이 말이 무슨 말일까? 커멘드 패턴을 사용하지 않으면 여러 객체들에 명령(Command)를 하기 위해서는 명령을 하는 객체(커멘드 객체)가 명령을 받는 객체들을 알아야 한다. 예를 들어 집 안의 조명을 제어하는 LightController 클래스가 있다고 해보자. LightController는 제조사가 다른 조명들(MainLight, SubLight, BedRoomLight)에 대한 제어를 한다. LightController는 조명을 제어하기 위해 각 조명을 제어하는 메서..
팩토리 패턴은 무엇인가? 팩토리 패턴은 한 종류의 객체를 만들기 위해서 해당 객체를 생성하는 팩토리 interface를 구현해서 만드는 것이다. 예를 들어 Item을 만드는 Factory 인터페이스가 있다고 해보자. interface Factory { fun createItem() : Item } 위 Factory를 PhoneFactory와 TabletFactory로 구현하면 해당 Factory에서는 Item을 팩토리 종류에 따라 다르게 생성한다. class PhoneFactory : Factory { override fun createItem(): Item { return .. } } class TabletFactory : Factory { override fun createItem(): Item { ..
Dev.Cho
'분류 전체보기' 카테고리의 글 목록 (36 Page)