Flipping views like Gmail & beyond
Switch branches/tags
Nothing to show
Clone or download
davideas Release 1.2.0
- SDK 28
- Android Studio 3.2
- Gradle 4.10.2
- AndroidX 1.0.0
Latest commit 74c28fd Oct 1, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
flipview-app Release 1.2.0 Sep 30, 2018
flipview Release 1.2.0 Sep 30, 2018
gradle/wrapper Release 1.2.0 Sep 30, 2018
showcase v1.1.0 Nov 4, 2015
.gitignore Initial commit Oct 26, 2015
README.md Release 1.2.0 Sep 30, 2018
bintray.gradle Upgrade to: Apr 7, 2018
build.gradle Release 1.2.0 Sep 30, 2018
gradlew Initial commit Oct 26, 2015
gradlew.bat Initial commit Oct 26, 2015
install.gradle Upgrade to: Apr 7, 2018
settings.gradle v1.0.0 Nov 1, 2015


Download API Licence Methods and Size


GMail-like View & beyond - v1.2.0 built on 2018.09.30 with AndroidX


FlipView is a ViewGroup (FrameLayout) that is designed to display 2 views/layouts by flipping the front one in favor of the back one, and vice versa. Optionally more views can be displayed in series one after another or can cycle with a interval.

Usage is very simple. You just need to add this View to any layout and you customize the behaviours by assigning values to the optional properties in the layout or programmatically. Please, refer to those attributes documentation for more details.

Not less, FlipView extends android.widget.ViewFlipper that extends android.widget.ViewAnimator, which means you can call all public functions of these two Android views.

Main features

  • Visible during design time ;-)
  • Custom In/Out animation + entry animation + rear ImageView animation
  • Custom layout, ImageView & TextView for front layout.
  • Custom layout, ImageView for rear layout.
  • Custom background Drawable & color.
  • AutoStart cycle animation with custom interval.
  • PictureDrawable for SVG resources.


Showcase1 Showcase2


Import the library into your project using JCenter

dependencies {
    implementation 'eu.davidea:flipview:1.2.0'

Pull requests / Issues / Improvement requests

Feel free to contribute and ask!


Supported attributes with default values:

    android usual attrs
    (see below).../>
android:inAnimation="@anim/grow_from_middle_x_axis" Identifier for the animation to use when a view is shown.
android:outAnimation="@anim/shrink_to_middle_x_axis" Identifier for the animation to use when a view is hidden.
android:animateFirstView="true" Defines whether to animate the current View when the ViewAnimation is first displayed.
android:autoStart="false" When true, automatically start animating.
android:flipInterval="3000" Time before next animation.
android:clickable="false" (!!) Set this if you want view reacts to the tap and animate it.
app:checked="false" Whether or not this component is showing rear layout at startup.
app:animateDesignLayoutOnly="false" true, animate front and rear layouts from settings + child views; false, exclude all layouts and animate only child views from design layout if any. (This attribute cannot be changed at runtime).
app:animationDuration="100" Set the main animation duration.
app:anticipateInAnimationTime="0" Anticipate the beginning of InAnimation, this time is already subtracted from the main duration (new delay is: main duration - anticipation time).
app:enableInitialAnimation="false" Whether or not the initial animation should start at the beginning.
app:initialLayoutAnimation="@anim/scale_up" Starting animation.
app:initialLayoutAnimationDuration="250" Starting animation duration.
app:frontLayout="@layout/flipview_front" Front view layout resource (for checked state -> false).
app:frontBackground="<OvalShape Drawable generated programmatically>" Front drawable resource (for checked state -> false).
app:frontBackgroundColor="<Color.GRAY set programmatically>" Front view color resource (for checked state -> false).
app:frontImage="@null" Front image resource (for checked state -> false).
app:frontImagePadding="0dp" Front image padding.
app:rearLayout="@layout/flipview_rear" Rear view layout resource (for checked state -> true).
app:rearBackground="<OvalShape Drawable generated programmatically>" Rear drawable resource (for checked state -> true).
app:rearBackgroundColor="Color.GRAY set programmatically" Rear view color resource (for checked state -> true).
app:rearImage="@drawable/ic_action_done" Rear accept image resource.
app:rearImagePadding="0dp" Rear image padding.
app:animateRearImage="true" Whether or not the rear image should animate.
app:rearImageAnimation="@anim/scale_up" Rear image animation.
app:rearImageAnimationDuration="150" Rear image animation duration.
app:rearImageAnimationDelay="animationDuration" Rear image animation delay (depends the animation/duration it can be smart setting a specific delay. For GMail effect set this to 0).
Non changeable values (in ms)
DEFAULT_INITIAL_DELAY = 500 This gives enough time to the activity to load all tree views before starting cascade initial animation.
SCALE_STEP_DELAY = 35 This gives an acceptable nice loading effect.
STOP_LAYOUT_ANIMATION_DELAY = 1500 This gives enough time to perform all entry animations but to stop further animations when screen is fully rendered.


  • Transparency has a little glitch when used with elevation, you could see shadow In the shape: more transparent the color is more visible the shadow is.
  • Using layer type software on the entire layout it removes the shadow/elevation.
  • Stroke and background color on custom Drawable should be preset by the user: too complex to determine the type of the Drawable used in order to change its color.

Change Log

Latest release

v1.2.0 - 2018.09.30

Old releases

v1.1.3 - 2017.03.07 | v1.1.2 - 2016.11.30 | v1.1.1 - 2016.04.07
v1.1.0 - 2015.11.05 | v1.0.0 - 2015.11.01


Copyright 2015-2018 Davide Steduto

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


Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.