EasyFlipView
https://github.com/wajahatkarim3/EasyFlipView
📚 Library Overview
The article on how this library was created is now published. You can read it on this link h...
The article on how this library was created is now published. You can read it on this link here. →.
💳 EasyFlipView
[Codacy Badge]
[Build Status] [Download] [Android Arsenal] [API] [] [Say Thanks!]
Built with ❤︎ by
Wajahat Karim and
contributors
</div>
A quick and easy flip view through which you can create views with two sides like credit cards, poker cards etc. [] ✔️ Changelog ========= Changes exist in the [releases](https://github.com/wajahatkarim3/EasyFlipView/releases) tab. 💻 Installation ============ Add this in your app's `build.gradle` file: ```groovy dependencies { implementation 'com.wajahatkarim:EasyFlipView:3.0.3' } ```
From the version `3.0.0`, this library will only support Android X naming artifacts. If you want to use the `android.support` versions, then use `2.1.2` version.
Or add EasyFlipView as a new dependency inside your pom.xml
```xml
com.wajahatkarim
EasyFlipView
3.0.3
pom
```
❔ Usage
=====
XML
---
EasyFlipView In XML layouts("Vertical")
```xml
```
EasyFlipView In XML layouts("Horizontal")
```xml
```
# 🎨 Customizations & Attributes
All customizable attributes for EasyFlipView
In Code (Java)
----
```java
// Flips the view with or without animation
mYourFlipView.flipTheView();
mYourFlipView.flipTheView(false);
// Sets and Gets the Flip Animation Duration in milliseconds (Default is 400 ms)
mYourFlipView.setFlipDuration(1000);
int dur = mYourFlipView.getFlipDuration();
// Sets and gets the flip enable status (Default is true)
mYourFlipView.setFlipEnabled(false);
boolean flipStatus = mYourFlipView.isFlipEnabled();
// Sets and gets the flip on touch status (Default is true)
mYourFlipView.setFlipOntouch(false);
boolean flipTouchStatus = mYourFlipView.isFlipOnTouch();
// Get current flip state in enum (FlipState.FRONT_SIDE or FlipState.BACK_SIDE)
EasyFlipView.FlipState flipSide = mYourFlipView.getCurrentFlipState();
// Get whether front/back side of flip is visible or not.
boolean frontVal = mYourFlipView.isFrontSide();
boolean backVal = mYourFlipView.isBackSide();
// Get/Set the FlipType to FlipType.Horizontal
boolean isHorizontal = mYourFlipView.isHorizontalType();
mYourFlipView.setToHorizontalType();
// Get/Set the FlipType to FlipType.Vertical
boolean isVertical = mYourFlipView.isVerticalType();
mYourFlipView.setToVerticalType();
// Get/Set if the auto flip back is enabled
boolean isAutoFlipBackEnabled = mYourFlipView.isAutoFlipBack();
mYourFlipView.setAutoFlipBack(true);
// Get/Set the time in milliseconds (ms) after the view is auto flip back to original front side
int autoflipBackTimeInMilliseconds = mYourFlipView.getAutoFlipBackTime();
mYourFlipView.setAutoFlipBackTime(2000);
// Sets the animation direction from left (horizontal) and back (vertical)
easyFlipView.setFlipTypeFromLeft();
// Sets the animation direction from right (horizontal) and front (vertical)
easyFlipView.setFlipTypeFromRight();
// Sets the animation direction from front (vertical) and right (horizontal)
easyFlipView.setFlipTypeFromFront();
// Sets the animation direction from back (vertical) and left (horizontal)
easyFlipView.setFlipTypeFromBack();
// Returns the flip type from direction. For horizontal, it will be either right or left and for vertical, it will be front or back.
easyFlipView.getFlipTypeFrom();
```
Flip Animation Listener
---
```java
EasyFlipView easyFlipView = (EasyFlipView) findViewById(R.id.easyFlipView);
easyFlipView.setOnFlipListener(new EasyFlipView.OnFlipAnimationListener() {
@Override
public void onViewFlipCompleted(EasyFlipView flipView, EasyFlipView.FlipState newCurrentSide)
{
// ...
// Your code goes here
// ...
}
});
```
❌ Known Issues
=============
## Clipping when rotation animation is running
To avoid clipping of top/bottom while flipping the view, you can disable it through XML like this
Add `android:clipChildren="false"` to the parent/root view of `EasyFlipView` component. And add `android:clipToPadding="false"` to the `EasyFlipView` itself. Special thanks to @ueen for this fix #64
## EasyFlipView in RecyclerViews
The `EasyFlipView` doesn't flip when used in `RecyclerView`. This is because the `EasyFlipView` uses the `onTouch()` method to intercept the touch events and flip the view accordingly. One easier solution is to disable the `flipOnTouch` attribute in XML by this.
```xml
app:flipOnTouch="false"
```
Now, your `RecyclerView` will scroll but the `EasyFlipView` will not flip or animate on touch etc. You will have to manually flip the view by calling the method `mYourFlipView.flipTheView()` inside the adapter or `ViewHolder` class of the `RecyclerView`. For example,
```java
public class MyRecyclerViewAdapter extends RecyclerView.Adapter {
private List
A quick and easy flip view through which you can create views with two sides like credit cards, poker cards etc. [] ✔️ Changelog ========= Changes exist in the [releases](https://github.com/wajahatkarim3/EasyFlipView/releases) tab. 💻 Installation ============ Add this in your app's `build.gradle` file: ```groovy dependencies { implementation 'com.wajahatkarim:EasyFlipView:3.0.3' } ```
Attribute Name | Default Value | Description |
---|---|---|
app:flipOnTouch="true" | true | Whether card should be flipped on touch or not. |
app:flipDuration="400" | 400 | The duration of flip animation in milliseconds. |
app:flipEnabled="true" | true | If this is set to false, then it won't flip ever in Single View and it has to be always false for RecyclerView |
app:flipType="horizontal" | vertical | Whether card should flip in vertical or horizontal |
app:flipType="horizontal" | vertical | Whether card should flip in vertical or horizontal |
app:flipFrom="right" app:flipFrom="back" | left front | Whether card should flip from left to right Or right to left(Horizontal type) or car should flip to front or back(Vertical type) |
app:autoFlipBack="true" | false | If this is set to true, then he card will be flipped back to original front side after the time set in autoFlipBackTime. |
app:autoFlipBackTime="1000" | 1000 | The time in milliseconds (ms), after the card will be flipped back to original front side. |