Flow alternatives and similar packages
Based on the "Other Widget" category.
Alternatively, view Flow alternatives based on common mentions on social networks and blogs.
-
AndroidSlidingUpPanel
This library provides a simple way to add a draggable sliding up panel (popularized by Google Music and Google Maps) to your Android application. Brought to you by Umano. -
BottomBar
(Deprecated) A custom view component that mimics the new Material Design Bottom Navigation pattern. -
ShortcutBadger
An Android library supports badge notification like iOS in Samsung, LG, Sony and HTC launchers. -
SystemBarTint
[DEPRECATED] Apply background tinting to the Android system UI when using KitKat translucent modes -
TapTargetView
An implementation of tap targets from the Material Design guidelines for feature discovery. -
android-viewbadger
[DEPRECATED] A simple way to "badge" any given Android view at runtime without having to cater for it in layout -
android-stackblur
Android StackBlur is a library that can perform a blurry effect on a Bitmap based on a gradient or radius, and return the result. The library is based on the code of Mario Klingemann. -
android-iconify
Android integration of multiple icon providers such as FontAwesome, Entypo, Typicons,... -
DraggablePanel
DISCONTINUED. Android library used to create an awesome Android UI based on a draggable element similar to the last YouTube graphic component. -
aFileChooser
DISCONTINUED. [DEPRECATED] Android library that provides a file explorer to let users select files on external storage. -
Swipecards
A Tinder-like Android library to create the swipe cards effect. You can swipe left or right to like or dislike the content. -
TourGuide
TourGuide is an Android library that aims to provide an easy way to add pointers with animations over a desired Android View -
StickyGridHeaders
DISCONTINUED. An Android Library that makes it easy to make grid views with sectioned data and headers that stick to the top. -
FloatingView
FloatingView can make the target view floating above the anchor view with cool animation -
TileView
TileView is a subclass of android.view.ViewGroup that asynchronously displays, pans and zooms tile-based images. Plugins are available for features like markers, hotspots, and path drawing. -
Bubbles for Android
Bubbles for Android is an Android library to provide chat heads capabilities on your apps. With a fast way to integrate with your development. -
RippleView
View that imitates Ripple Effect on click which was introduced in Android L (for Android 2.3+) -
android-sliding-layer-lib
DISCONTINUED. Highly customizable SlidingLayer as you have seen in Wunderlist -
Android-ActionItemBadge
This library offers a simple method to add a small badge icon to your ActionBar-MenuItem -
SortableTableView
An Android library containing a simple TableView and an advanced SortableTableView providing a lot of customisation possibilities to fit all needs. -
ScratchView
ScratchView repo is UX Design involving scratch cards like views which are scratched to reveal the information they conceal. -
android-FlipView
A small, easy to use android library for implementing flipping between views as seen in the popular Flipboard application
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Flow or a related project?
README
Deprecated
Flow had a good run and served us well, but new use is strongly discouraged. The app suite at Square that drove its creation is in the process of replacing Flow with Square Workflow.
Flow
"Name-giving will be the foundation of our science." — Linnaeus
"The winds and waves are always on the side of the ablest navigators." — Gibbon
"Memory is the treasury and guardian of all things." — Cicero
Flow gives names to your Activity's UI states, navigates between them, and remembers where it's been.
Features
Navigate between UI states. Support the back button easily without confusing your users with surprising results.
Remember the UI state, and its history, as you navigate and across configuration changes and process death.
Manage resources with set-up/tear-down hooks invoked for each UI state. UI states can easily share resources, and they'll be disposed when no longer needed.
Manage all types of UIs-- complex master-detail views, multiple layers, and window-based dialogs are all simple to manage.
Using Flow
Gradle:
compile 'com.squareup.flow:flow:1.0.0-alpha3'
Install Flow into your Activity:
public class MainActivity {
@Override protected void attachBaseContext(Context baseContext) {
baseContext = Flow.configure(baseContext, this).install();
super.attachBaseContext(baseContext);
}
}
By default, Flow will take over your Activity's content view. When you start your Activity, you should see a "Hello world" screen. Of course you'll want to change this-- that's covered under Controlling UI below.
Defining UI states with key objects
Your Activity's UI states are represented in Flow by Objects, which Flow refers to as "keys". Keys are typically value objects with just enough information to identify a discrete UI state.
Flow relies on a key's equals and hashCode methods for its identity. Keys should be immutable-- that is, their equals
and hashCode
methods should always behave the same.
To give an idea of what keys might look like, here are some examples:
public enum TabKey {
TIMELINE,
NOTIFICATIONS,
PROFILE
}
public final class HomeKey extends flow.ClassKey {
}
public final class ArticleKey {
public final String articleId;
public ArticleKey(String articleId) {
this.articleId = articleId;
}
public boolean equals(Object o) {
return o instanceof ArticleKey
&& articleId.equals(((ArticleKey) o).articleId);
}
public int hashCode() {
return articleId.hashCode();
}
}
See the Sample Projects below for more example keys.
Navigation and History
Flow offers simple commands for navigating within your app.
Flow#goBack()
-- Goes back to the previous key. Think "back button".
Flow#set(key)
-- Goes to the requested key. Goes back or forward depending on whether the key is already in the History.
Flow also lets you rewrite history safely and easily.
Flow#setHistory(history, direction)
-- Change history to whatever you want.
See the [Flow][Flow.java] class for other convenient operators.
As you navigate the app, Flow keeps track of where you've been. And Flow makes it easy to save view state (and any other state you wish) so that when your users go back to a place they've been before, it's just as they left it.
Controlling UI
Navigation only counts if it changes UI state. Because every app has different needs, Flow lets you plug in [your own logic][Dispatcher.java] for responding to navigation and updating your UI.
See the Basic Sample, Tree Sample, and MultiKey Sample below for examples.
Managing resources
Your app requires different resources when it's in different states; sometimes those resources are shared between states. Flow [makes it easy][ServicesFactory.java] to associate resources with keys so they're set up when needed and torn down (only) when they're not anymore.
See the Tree Sample for an [example][FlowServices.java].
Surviving configuration changes and process death
Android is a hostile environment. One of its greatest challenges is that your Activity or even your process can be destroyed and recreated under a variety of circumstances. Flow makes it easy to weather the storm, by automatically remembering your app's state and its history.
You supply the serialization for your keys, and Flow does the rest. Flow automatically saves and restores your History (including any state you've saved), taking care of all of the Android lifecycle events so you don't have to worry about them.
Sample projects
- [Hello World](flow-sample-helloworld) - A starting point for integration.
- [Basic Sample](flow-sample-basic) - Fully configured Flow.
- [Tree Sample](flow-sample-tree) - Uses TreeKeys to define scopes and share state.
- [MultiKey Sample](flow-sample-multikey) - Uses MultiKeys to represent screens with dialogs as discrete states.
License
Copyright 2013 Square, 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.
*Note that all licence references and agreements mentioned in the Flow README section above
are relevant to that project's source code only.