Netflix’s Android Componentization Architecture
Lifecycle aware, testable and reusable UI components for Android.
Sample code
Fragment / Activity
...
LoadingComponent(container, EventBusFactory.get(this))
...
Component (Presenter/Controller/ViewModel)
...
bus.getSafeManagedObservable(ScreenStateEvent::class.java)
.subscribe {
when (it) {
ScreenStateEvent.Loading -> {
uiView.show()
}
ScreenStateEvent.Loaded -> {
uiView.hide()
}
ScreenStateEvent.Error -> {
uiView.hide()
}
}
}
...
UIView
class LoadingView(container: ViewGroup) : UIView<UserInteractionEvent>(container) {
private val view: View =
LayoutInflater.from(container.context).inflate(R.layout.loading, container, true)
.findViewById(R.id.loadingSpinner)
...
Complete Samples
Basic Loading/Error/Success Screen