State Views for Android (BETA version)

Create & Show progress, data or error views, the easy way!

StateViews is based on ViewSwitcher mechanism and allows to handle the different app states, from loading... to displaying
data and error views, the library is tiny and fully customizable.

<sakout.mehdi.StateViews.StateView
        android:id="@+id/status_page"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Hello World!" />

 </sakout.mehdi.StateViews.StateView>

Then Call the appropriate state:

mStatusPage.displayLoadingState();
mStatusPage.displayState("TAG_NAME");
mStatusPage.hideStates();

Setup

Snapshot

compile 'com.github.medyo:state-views:0.2'

Usage

medyo/StateViews/app/

1. Available attributes for PageStatus Builder

Function Description
addState(params) Create a new state
setIconColor(Int) Set Icon color
setIconSize(Int) Set Icon Size
setTextColor(Int) set Title and description colors
setFontFace(String) Set Custom font
setButtonBackgroundColor(Int) Set Button Background color
setButtonTextColor(String) Set Button Text color

2. Available attributes for PageStatesView

Function Description
displayState(String) Display a state by his tag name
hideStates() Hide all states and display data
displayLoadingState() Display the loading state
addCustomState(Intent) Create a new state only available for the current activity, fragment...
setOnStateButtonClicked(View.OnClickListener) Click listener for the state button
applyGravity(Int) Set View Gravity

3. Samples

Display an Error View

no_connection

addState(
    "TAG_ERROR",
    "No Connection",
    "Error retrieving information from server.",
    AppCompatResources.getDrawable(this, R.drawable.ic_server_error),
    "Retry"
    );

mStatusPage.displayState("TAG_ERROR");

Display a "no Data" View

no_data

addState(
    "TAG_NO_RESULTS",
    "No Results Found",
    "Unfortunately I could not find any results matching your search",
    AppCompatResources.getDrawable(this, R.drawable.search), null
)

mStatusPage.displayState("TAG_NO_RESULTS");

GitHub