#Event: AnimationComplete(State As Boolean)
Private Sub Class_Globals
Private r As Reflector
Private SlidingPanel As Panel
Private downY As Int
Private ACTION_UP, ACTION_DOWN, ACTION_MOVE As Int
Private IsSheetOpen As Boolean
Private cCallback As Object
Private cEventName As String
End Sub
Public Sub Initialize(Parent As Activity, Callback As Object, EventName As String, LayoutContainer As Panel)
cCallback = Callback
cEventName = EventName
ACTION_UP = Parent.ACTION_UP
ACTION_DOWN = Parent.ACTION_DOWN
ACTION_MOVE = Parent.ACTION_MOVE
SlidingPanel = LayoutContainer
r.Target = SlidingPanel
r.SetOnTouchListener("SlidingPanel_Touch")
Parent.AddView(LayoutContainer, 0dip, 100%y - 50dip, 100%x, LayoutContainer.GetView(0).Height*.7)
End Sub
'Open the CustomBottomSheet.
Public Sub OpenBottomSheet
IsSheetOpen = True
SlidingPanel.Top = 100%y - SlidingPanel.Height
If SubExists(cCallback, cEventName & "_AnimationComplete") Then
CallSubDelayed2(cCallback, cEventName & "_AnimationComplete", IsSheetOpen)
End If
End Sub
'Close the CustomBottomSheet.
Public Sub CloseBottomSheet
IsSheetOpen = False
SlidingPanel.Top = 100%y - 50dip
If SubExists(cCallback, cEventName & "_AnimationComplete") Then
CallSubDelayed2(cCallback, cEventName & "_AnimationComplete", IsSheetOpen)
End If
End Sub
Public Sub IsOpen As Boolean
Return IsSheetOpen
End Sub
Private Sub SlidingPanel_Touch(Obj As Object, Action As Int, X As Float, Y As Float, Motion As Object) As Boolean
If Action = ACTION_DOWN Then
downY = Y
End If
If Action = ACTION_MOVE Then
SlidingPanel.Top = SlidingPanel.Top + Y - downY
If SlidingPanel.Top > 100%y - 50dip Then SlidingPanel.Top = 100%y - 50dip
If SlidingPanel.Top < 100%y - SlidingPanel.Height Then SlidingPanel.Top = 100%y - SlidingPanel.Height
End If
If Action = ACTION_UP Then
If SlidingPanel.Top + 50dip < 100%y - SlidingPanel.Height / 3 Then
SlidingPanel.Top = 100%y - SlidingPanel.Height 'Open
IsSheetOpen = True
If SubExists(cCallback, cEventName & "_AnimationComplete") Then
CallSubDelayed2(cCallback, cEventName & "_AnimationComplete", IsSheetOpen)
End If
End If
If SlidingPanel.Top + SlidingPanel.Height > 100%y Then
SlidingPanel.Top = 100%y - 50dip 'Close
IsSheetOpen = False
If SubExists(cCallback, cEventName & "_AnimationComplete") Then
CallSubDelayed2(cCallback, cEventName & "_AnimationComplete", IsSheetOpen)
End If
End If
End If
Return True
End Sub