B4A Library [B4X][XUI] WobbleMenu - a cross platform animated bottom navigation

Discussion in 'Additional libraries, classes and official updates' started by Brandsum, Mar 2, 2019.

  1. Brandsum

    Brandsum Active Member Licensed User

    Hi everyone,

    This is a B4X compatible bottom navigation. It has 4 types of tab changing animation and 3 types of icon revealing animation. Try it!

    screenrec.gif

    WobbleMenu
    Author:
    @Brandsum
    Version: 1.3
    Dependency: BitmapCreator, XUI
    • WobbleMenu
      • Functions:
        • GetCurrentTab As Int
          Get the current tab id (1 to 5)
        • SetAnimationType(Animation_Type As Int)
          Set the tab changing animation type. Check properties
        • SetCurrentTab(TabID As Int)
          Set the current tab from 1 to 5
        • SetIconAppearStyle(Icon_Appear_Style As Int)
          Set icon revealing animation type. Check properties
        • SetTabIcon(TabID As Int,Icon As String, IconFont As Typeface)
          Set the tab icons (TabID must be between 1 to 5)
      • Events:
        • Tab1Click
        • Tab2Click
        • Tab3Click
        • Tab4Click
        • Tab5Click
      • Properties:
        • ANIMATION_TYPE_ELASTIC_OUT As Int [read only]
        • ANIMATION_TYPE_ELASTIC_IN As Int
        • ANIMATION_TYPE_EASE_OUT As Int
        • ANIMATION_TYPE_EASE_IN As Int
        • ANIMATION_TYPE_NONE As Int
        • ICON_APPEAR_FROM_CENTER As Int
        • ICON_APPEAR_FROM_EDGE As Int
        • ICON_APPEAR_FADE_IN As Int
        • ICON_APPEAR_NO_ANIMATION As Int
    You can implement your own animation. Check this link. ;)
    Copy the library to additional library folder then run the examples. Have fun!

    UPDATE v1.2 (Latest Examples and Library Attached):
    1. Added 3 Tabs option to designer properties
    2. Added Icon Fade In and no animation option
    3. Fixed SetTabIcon method, previously it was unable to handle any TabID value other than 1 to 5
    UPDATE v1.3:
    1. Added Shadow Type (Light/Dark) Option
     

    Attached Files:

    Last edited: Mar 7, 2019
    susu, amaxco, jahswani and 30 others like this.
  2. mcqueccu

    mcqueccu Active Member Licensed User

    Wow this is great.
     
  3. Alexander Stolte

    Alexander Stolte Well-Known Member Licensed User

    would it be possible to set only 3 tabs?
     
  4. Brandsum

    Brandsum Active Member Licensed User

    Why not! Check the latest update ;)
     
  5. Alexander Stolte

    Alexander Stolte Well-Known Member Licensed User

    it would be nice, if i have a property to change this black line to white or so.
    Screenshot_20190306-221636__01.jpg
     

    Attached Files:

  6. Brandsum

    Brandsum Active Member Licensed User

    UPDATE v1.3:
    1. Added Shadow Type (Light/Dark) Option
     
  7. oparra

    oparra New Member Licensed User

    If you want to see the halo effect on tab.

    Code:
    Private Sub TriggerTabClickEvent(t As B4XView)
        
    If CurrentTab = Tabs.IndexOf(t) + 1 Then Return
       
        RippleEffect( t, xui.Color_Gray, 
    250)

    Add to WobbleMenu.bas.

    Code:
    'https://www.b4x.com/android/forum/threads/b4x-xui-simple-halo-animation.80267/#content
    Private Sub RippleEffect (Parent As B4XView, Color As Int, Duration As Int)
        
    Dim cvs As B4XCanvas
        
    Dim p As B4XView = xui.CreatePanel("")
        
    Dim InnerRadius As Int = Parent.Height * 1.30
        
    If Parent.Width <> Parent.Height Then InnerRadius = Max(Parent.Width, Parent.Height) * 1.60
        p.SetLayoutAnimated(
    000, InnerRadius, InnerRadius)
        cvs.Initialize(p)
        cvs.DrawCircle(cvs.TargetRect.CenterX, cvs.TargetRect.CenterY, cvs.TargetRect.Width / 
    2, Color, True0)
        
    Dim bmp As B4XBitmap = cvs.CreateBitmap
        p.RemoveViewFromParent
        
    Dim iv As ImageView
        iv.Initialize(
    "")
        
    Dim p As B4XView = iv
        
    Dim Radius As Int = InnerRadius/2
        
    Dim x As Int = Parent.Width/2
        
    Dim y As Int = Parent.Height/2
        p.SetBitmap(bmp)
        Parent.AddView(p, x, y, 
    00)
        p.SetLayoutAnimated(Duration, x - Radius, y - Radius, Radius * 
    2, Radius * 2)
        p.SetVisibleAnimated(Duration, 
    False)
        Sleep(Duration)
        p.RemoveViewFromParent
    End Sub
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice