Android version of FlipperControl for UWP . Now it's written in Kotlin.
A control that uses flip transition to change different states. Works on API 19, but with more tests I think it works well on API 16.
How to use
FlipperView extends from
FrameLayout so you can use it as a
FrameLayout but it only displays one child at a time and you can call
next() to switch to another child. Please don't put views that do heavy work.
It has a sample proj to demonstrate how to use it.
There are a few attrs that control the behavior:
Default display index of view. Note that the value of zero points to the first view you declare in XML.
Animation duration in millis. The default value is 200 which I think it's fast enough.
Enable tap to flip or not. Default value is false.
Current there are 4 ways to switch views:
Segue to next view. If it's the end of the views, then segue to the first one.
Segue to the previous view. If it's the head of the views, then segue to the last one.
fun next(Int, Boolean, ViewAction, ViewAction?)
Segue to the specified one with/without animation, and custom the action that will be applied on the current display view on Exit animation end and run the action after the Enter animation.
To understand the running time on both actions, please refer to the advance topic.
Note that both
ViewAction has default value for Kotlin.
Please be aware of IndexOutOfBoundsException.
Perform the flip animation and run the custom action on exit animation end.
The flipping animation contains two parts:
- Exit animation: the current display view rotates from 0 to 90 degrees
- Enter animation: the next display view rotates from -90 to 0 degrees
At the end of both animations, you can perform your actions. See
fun next(Int, Boolean, ViewAction, ViewAction?) method for details.
Note for Android P user
Since the elevation shadow in Android P is NOT control by animation transformation, thus it will cause some weird issues on Android P devices.
Thus the FlipperLayout will disable elevation during animation and apply it back for you at the end of animation.