The simplest navigation library for Android.
Note: This library is currently under development for the next major version.
- Navigation is as simple as calling
goTo(screen)
- You get full control of the backstack
- Transitions are automaticaly handled for you
Add the dependencies you need in your build.gradle
:
implementation 'com.wealthfront:magellan:1.1.0'
def magellanVersion = '1.1.0'
implementation "com.wealthfront:magellan:${magellanVersion}"
implementation "com.wealthfront:magellan-support:${magellanVersion}"
implementation "com.wealthfront:magellan-rx:${magellanVersion}"
implementation "com.wealthfront:magellan-rx2:${magellanVersion}"
- Better Kotlin interoperability
- Design lib add-on (for tabs), in the meantime, here is the code to implement tabs.
MainActivity.java
:
public class MainActivity extends SingleActivity {
@Override
protected Navigator createNavigator() {
return Navigator.withRoot(new HomeScreen()).build();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
activity_main.xml
:
<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 example HomeScreen.java
:
public class HomeScreen extends Screen<HomeView> {
@Override
protected HomeView createView(Context context) {
return new HomeView(context);
}
}
Associated View HomeView.java
:
public class HomeView extends BaseScreenView<HomeScreen> {
public HomeView(Context context) {
super(context);
inflate(context, R.layout.home, this);
}
}
Advanced sample using Dependency Injection, Retrofit, and Rx.
Kotlin sample (courtesey of @jmfayard)
For more, see the wiki.
Copyright 2017 Wealthfront, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.