componentizationArch

More: Author   ReportBugs   
Tags:

Reactive, Lifecycle aware, testable and reusable UI components for Android using Redux.

Blog Post

Netflix’s Android Componentization Architecture

Lifecycle aware, testable and reusable UI components for Android.

Droidcon NYC 2018 Talk

Droidcon SF 2018 Talk

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

Basic Player UI Component

Unit Tests

Unit tests for Components

Support Me
Apps
About Me
Google+: Trinea trinea
GitHub: Trinea