Magellan(마젤란) 사용하기
친구들과 프로젝트를 진행하면서 요즘 BottomNavigationView라는 것을 정말 많이 쓰고있는데요, 이 뷰는 아래에 Toolbar와 비슷한 bar가 하나 놓여져 있고 그 안에 아이템들이 자리하고, 아이템 클릭 시 위에있는 Fragment가 교체되는 뷰 입니다. 대표적으로 Youtube가 해당 뷰를 사용하고 있죠. Fragment는 생명주기 관리가 매우 까다로워서 많은 개발자들의 두려움의 존재(?) 이기도 하죠.
그런데, 이 두려움을 떨쳐낼 라이브러리가 있습니다. 같이 하던 친구의 추천으로 처음 알게 된 라이브러리 입니다.
MVVM뷰패턴을 구현하기에 딱인 것 같습니다.
마젤란! 무작정 써보자.
사실 말로 표현하면 간단합니다.
SingleActivity클래스 하나 생성, 이걸 담는 컨테이너 뷰 생성, 그리고 보여줄 여러개의 액티비티(스크린과 뷰로 나눕니다.)... 끝입니다.
아직까지 잘 모르시겠지만, 직접 써보시면 아시게 될겁니다. 저는 DataBinding과 병합해서 사용중인데 굉장히 편합니다. 강추합니다!
적용해보자.
implementation 'com.wealthfront:magellan:1.1.0'
implementation 'com.wealthfront:magellan-support:1.1.0'
위와 같이 app단 Gradle에서 추가해 주시기 바랍니다. 2018년 부터는 compile이 사라지게 되니, api나 implementation으로 진행해 주시기 바랍니다.
그 다음 MainActivity에서 아래와 같이 extends를 수정해 줍니다.
public class MainActivity extends SingleActivity
그 다음 onCreate 위에다가 RootView(?)를 생성해 줍니다. 이는 메인으로 둘 스크린을 지정합니다. Fragment로 따지면 MainFragment(...)입니다.
@Override
protected Navigator createNavigator() {
return Navigator
.withRoot(new HomeScreen())
.build();
}
이제 onCreate에서 지정한 레이아웃 파일에 magellan 컨테이너를 추가해 줍니다.
<com.wealthfront.magellan.ScreenContainer
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/magellan_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
이제 Screen과 View 클래스를 추가해 줍니다.
public class HomeScreen extends Screen<HomeView> { @Override protected HomeView createView(Context context) { return new HomeView(context); } }
public class HomeView extends BaseScreenView<HomeScreen> { public HomeView(Context context) { super(context); inflate(context, R.layout.home, this); } }
이제 실행하기만 하면 됩니다! 뷰와 스크린을 생성하여 아래 소스 한 줄이면 어떤 뷰나 스크린으로도 이름만 바꾸면 가능합니다.
Screen클래스에서 아래와 같이 메소드를 하나 작성합니다.
public void goScreen() {
getNavigator().goTo(new MyScreen());
}
그 다음 View로 넘어와 위의 메소드를 호출하기만 하면 됩니다.
getScreen().goScreen();
이렇게 해서 모든 과정이 끝났습니다. 위에서 링크한 Github에서 Wiki에 보시면 더 많은 정보가 있으니 참고하시기 바랍니다.
MVVM패턴을 구현하기 위해서는 정말 최적의 라이브러리 같습니다! 열심히 공부합시당
이상입니다! 질문은 댓글로 받을게요
'Android' 카테고리의 다른 글
인터넷 연결 상태 확인하기 (0) | 2018.07.23 |
---|---|
BottomNavigationView 애니메이션 제거하기 (0) | 2018.07.22 |
RecyclerView에서 원하는 항목 item 제거하기 (0) | 2018.07.17 |
Google I/O Extended Seoul 참가 후기 (0) | 2018.06.12 |
Android Studio에서 Firebase Assistant 사용하기 (With. Dynamic Links) (2) | 2018.06.03 |
댓글
이 글 공유하기
다른 글
-
인터넷 연결 상태 확인하기
인터넷 연결 상태 확인하기
2018.07.23 -
BottomNavigationView 애니메이션 제거하기
BottomNavigationView 애니메이션 제거하기
2018.07.22 -
RecyclerView에서 원하는 항목 item 제거하기
RecyclerView에서 원하는 항목 item 제거하기
2018.07.17 -
Google I/O Extended Seoul 참가 후기
Google I/O Extended Seoul 참가 후기
2018.06.12