Magellan
The simplest navigation library for Android.
Main Features
- Navigation is as simple as calling
goTo(screen)
- You get full control of the backstack
- Transitions are automaticaly handled for you
Download
Add the dependencies you need in your build.gradle
:
Core library
compile 'com.wealthfront:magellan:1.0.0'
Optional add-ons
def magellanVersion = '1.0.0' compile 'com.wealthfront:magellan:' + magellanVersion compile 'com.wealthfront:magellan-support:' + magellanVersion compile 'com.wealthfront:magellan-rx:' + magellanVersion
Add-on coming soon
- Rx 2: already merged, will be in the next release (thanks to @FabianTerhorst).
- Design lib (for tabs), in the meantime, here is the code to implement tabs.
Getting started
Single Activity
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.main_activity);
}
}
main_activity.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"
/>
Minimal Screen implementation
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(R.layout.home);
}
}
Samples
Advanced sample using Dependency Injection, Retrofit, and Rx.
Kotlin sample (courtesey of @jmfayard)
Learn More
For more, see the wiki.
License
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.