이 영역을 누르면 첫 페이지로 이동
CodeJUN 블로그의 첫 페이지로 이동

CodeJUN

페이지 맨 위로 올라가기

CodeJUN

심심해서 하는 블로그

Magellan(마젤란) 사용하기

  • 2018.07.19 22:17
  • Android

친구들과 프로젝트를 진행하면서 요즘 BottomNavigationView라는 것을 정말 많이 쓰고있는데요, 이 뷰는 아래에 Toolbar와 비슷한 bar가 하나 놓여져 있고 그 안에 아이템들이 자리하고, 아이템 클릭 시 위에있는 Fragment가 교체되는 뷰 입니다. 대표적으로 Youtube가 해당 뷰를 사용하고 있죠. Fragment는 생명주기 관리가 매우 까다로워서 많은 개발자들의 두려움의 존재(?) 이기도 하죠.

그런데, 이 두려움을 떨쳐낼 라이브러리가 있습니다. 같이 하던 친구의 추천으로 처음 알게 된 라이브러리 입니다.

MVVM뷰패턴을 구현하기에 딱인 것 같습니다.


마젤란! 무작정 써보자.

Github링크를 우선 첨부해 드리도록 하겠습니다.
바로가기(클릭)
코틀린은 여기를 눌러주세요.


사실 말로 표현하면 간단합니다.

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

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 인터넷 연결 상태 확인하기

    인터넷 연결 상태 확인하기

    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
다른 글 더 둘러보기

정보

CodeJUN 블로그의 첫 페이지로 이동

CodeJUN

  • CodeJUN의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 방명록

카테고리

  • 분류 전체보기 (54)
    • Android (38)
    • BlockChain (4)
    • React Native (4)
    • 아두이노 (2)
    • 프로젝트 (6)

공지사항

  • 공지 - 블로그를 시작하며

태그

  • arduino
  • Android
  • 안드로이드
  • c++
  • 강좌
  • Firebase
  • 아두이노
  • C

나의 외부 링크

  • Github

정보

CODE_JUN의 CodeJUN

CodeJUN

CODE_JUN

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © CODE_JUN. Designed by Fraccino.

티스토리툴바