Technical Data Questionnaire - novoda/landing-strip GitHub Wiki

Overview of the project. What are its technical capabilities compared to the industry standard?

A ViewPager Tab Layout with fully customisable tab layouts. Other libraries extsisted which focused on a predetermined set of customisable features which were not enough to meet our design requirements.

Roughly when did the work start & finish and range of Novodans working on it at any one time?

Initial conception March 2015 to June 2015, 4 contributors. Various bug fixes September 2015 to November 2016, 3 contributors. Version 2 api enhancement February 2017 to April 2017, 4 contributors.

What platforms and tools did you use to make it? (encouraged to namedrop components/languages/databases etc)

Java, Gradle, Maven, Bintray, JCenter, Novoda bintray-release and Android.

Describe, in detail, the technical challenges faced (specifically what development required more than routine techniques) and what was engineered to overcome them?

In order to provide a fully customisable Tab Layout it meant creating our own android widget and building up a simple and fluent public api. Custom Tabs were achieved by allowing clients to provide their own layouts with the library inflating and maintaining the state of them. With Material Design common place it was also expected for certain interactions, such as swiping to be accompanied by specific animations. This was achieved by making use of android support-library animation interperlators to retain a smooth and known animation.

Our first approach was to create a minimal Api without much flexibility whilst allowing clients to customise the core of the library, the Tab. This worked well for us for two years~ until new requirements came in where we had to update a single Tab in the Tab Layout. The current implementation assumed all Tabs would be created/updated at the same time causing a flickering of all Tabs to occur during an update.

Our solution came from the combination of the android landscape changing and new design patterns becoming popular. With the popularity and conceptually similar feature set of the first party Android RecylcerView library we based a second iteration of the LandingStrip on a Notification based api. The core functionality remained the same however by moving to notifications our public api was driven to match the RecylcerView and we were able to reach our goal of updating single Tabs.