B4A Library [B4X] [XUI] AS Swipe Card - a tinder like swipeable card view

Alexander Stolte

Expert
Licensed User
Hello Community,
I spend a lot of time in creating views, like this and to create a high quality view cost a lot of time. If you want to support me and further views, then you can do it here by Paypal. :)

I have long thought about offering the view with a fee, because it took a lot of time. But then I decided to offer the view with with one condition. I want to be mentioned in your app in the credits when you use this view. Thanks.

This library is compatible and tested with B4A,B4I and B4J!
If you have bugs or a wish then tell me it in the comments.

Features
  • cross-platform compatible
  • enable or disable events
  • add and remove cards
  • scroll to cards
  • animations
  • swipe with fingers
  • and more...
sc_1.gif
sc_2.gif
Bildschirmaufnahme 2020-05-06 um 19.47.082.gif


On B4J and B4I you need a base panel, only this way the events can be triggered by your other control elements, see the example projects to learn more.

ASSwipeCard
Author: Alexander Stolte
Version: 1.00

  • ASSwipeCard
    • Events:
      • BaseResize (Width As Double, Height As Double)
      • IndexChanged (index As Int)
      • ReachEnd
      • SwipeStateChanged (state As Int)
    • Functions:
      • AddCard (xpnl As B4XView, Tag As Object) As String
      • Class_Globals As String
      • DesignerCreateView (Base As Object, Lbl As Label, Props As Map) As String
        Base type must be Object
      • getBase As B4XView
      • GetCard (Index As Int) As B4XView
      • getCardBackground As B4XView
      • getSize As Int
      • getTag (Index As Int) As Object
      • IniParent (parent As B4XView) As String
      • Initialize (Callback As Object, EventName As String) As String
      • IsInitialized As Boolean
        Tests whether the object has been initialized.
      • NextCard (swipe_state As Int)
      • PreviousCard (swipe_state As Int)
      • RemoveCard (Index As Int) As String
      • setCurrentIndex (index As Int) As String
      • SwipeState_BOTTOM As Int
      • SwipeState_LEFT As Int
      • SwipeState_NEUTRAL As Int
      • SwipeState_RIGHT As Int
      • SwipeState_TOP As Int
      • SwipeStateRandom As Int
    • Properties:
      • Base As B4XView [read only]
      • CardBackground As B4XView [read only]
      • CurrentIndex
      • Size As Int [read only]
  • SwipeCardItems
    • Fields:
      • IsInitialized As Boolean
        Tests whether the object has been initialized.
      • Tag As Object
      • xpnl_cardbase As B4XView
    • Functions:
      • Initialize
        Initializes the fields to their default value.
Changelog
  • 1.00
    • Release
  • 1.01
    • Add Designer Property: EnableLeftRightSwipe -Enabled or Disabled the swipe gesture for left and right swiping
    • Add Designer Property: EnableTopBottomSwipe -Enabled or Disabled the swipe gesture for top and bottom swiping
Have Fun :)
@Alexander Stolte
 

Attachments

Last edited:

Alexander Stolte

Expert
Licensed User
tested on b4i on an iphone 6 (ios 12.4.5) - the demo works great - had it running in 2 minutes. Great work!!!
Thank you, on a real device? Was it smooth? because on my simulator the performance was not the best, but the same code is running well on B4A in debug mode.

Well done Alexander , well done 👍
Thanks! :)
 

miker2069

Active Member
Licensed User
Question - I notice that pressing the next and prev button will increment/decrement the cards. However swiping up or down (or left or right) always increments the cards. If I wanted the card sequence to say increment when I swipe up or swipe right and decrement when I swipe left or swipe down - how would I do that? I see that SwipeStateChanged is called and you can get the swipe action but it seems that the card is incremented before this event is called. Is there a way to get the swipe action and then set the card I'd like to display next?
 

miker2069

Active Member
Licensed User
Thank you, on a real device? Was it smooth? because on my simulator the performance was not the best, but the same code is running well on B4A in debug mode.


Thanks! :)
Well using the bext/previous button the transition was super smooth. Using swipe action, it wasn't as smooth but not bad or anything (release mode is a little faster than debug). The iphone 6 isn't considered latest/greatest and other apps to me feel sluggish so I would attribute this maybe to the phone itself. I have an iphone 10 and will try it on that in the next day or so. Still totally usable though with swipe actions
 

Alexander Stolte

Expert
Licensed User
Question - I notice that pressing the next and prev button will increment/decrement the cards. However swiping up or down (or left or right) always increments the cards. If I wanted the card sequence to say increment when I swipe up or swipe right and decrement when I swipe left or swipe down - how would I do that? I see that SwipeStateChanged is called and you can get the swipe action but it seems that the card is incremented before this event is called. Is there a way to get the swipe action and then set the card I'd like to display next?
Then I change it so that the cards are not automatically increased or decreased and the user has to do this himself in the event.

Well using the bext/previous button the transition was super smooth. Using swipe action, it wasn't as smooth but not bad or anything (release mode is a little faster than debug). The iphone 6 isn't considered latest/greatest and other apps to me feel sluggish so I would attribute this maybe to the phone itself. I have an iphone 10 and will try it on that in the next day or so. Still totally usable though with swipe actions
ok thank you, i am curious about the result of the iphone 10
 

Alexander Stolte

Expert
Licensed User
Question - I notice that pressing the next and prev button will increment/decrement the cards. However swiping up or down (or left or right) always increments the cards. If I wanted the card sequence to say increment when I swipe up or swipe right and decrement when I swipe left or swipe down - how would I do that? I see that SwipeStateChanged is called and you can get the swipe action but it seems that the card is incremented before this event is called. Is there a way to get the swipe action and then set the card I'd like to display next?
It's not possible. Have you ever seen someone wipe away a card to add another card? Well, I haven't. :)
 

saeed10051

Active Member
Licensed User
Hi Alexander very nice library. I need to know how can i put an image view to the swipe card and upload different image to every card. also is it possible to put different controls such as buttons or edittext or labels on each card and how to get the index of those controls so that coding can be done for different controls
 

Unobtainius

Member
Licensed User
I love the name ASSwhipe 😁👍
 

Unobtainius

Member
Licensed User
ASSwipeCard it's the name of the library unless I'm mistaken.
I've been playing with it and love it.
Awesome job
I want to learn more about about animation, it makes simple things look so much more interesting.
 

alimanam3386

Active Member
Licensed User
Thanks for this fantastic lib , how we can disable swipe_top and swipe_bottom ? I want use just swipe_left and swipe_right , what can I do with current lib to disable those swipe.
 

Alexander Stolte

Expert
Licensed User
how we can disable swipe_top and swipe_bottom ? I want use just swipe_left and swipe_right , what can I do with current lib to disable those swipe.
If you only want to diasable the top and bottom events then uncheck the designer properties:
1591458057165.png

But if you want to disable the swipe gestures to the top or to the bottom, then try to comment out all the code where "downy" occurs
 
Top