#Event: SingleClick
Sub Class_Globals
Private mEventName As String
Private mCallBack As Object
Private mBase As Panel
Private Const DefaultColorConstant As Int = -984833
Private WorkIndex As Int
Private BDGravity As Int
Private bitmaps As List
Private totalFrames As Int
Type BitmapAndDelay (bmp As Bitmap, Delay As Int)
End Sub
Public Sub Initialize (Callback As Object, EventName As String)
mEventName = EventName
mCallBack = Callback
End Sub
Public Sub DesignerCreateView (Base As Panel, Lbl As Label, Props As Map)
mBase = Base
mBase.Visible = False
End Sub
Public Sub SetGif (Dir As String, FileName As String)
If Dir = File.DirAssets Then
File.Copy(File.DirAssets, FileName, File.DirInternal, FileName)
Dir = File.DirInternal
End If
Dim path As String = File.Combine(Dir, FileName)
Dim gd As GifDecoder
gd.Load(Dir, FileName)
bitmaps.Initialize
totalFrames = gd.FrameCount
For i = 0 To gd.FrameCount - 1
Dim bd As BitmapAndDelay
bd.Initialize
bd.bmp = gd.Frame(i)
bd.Delay = 0
bitmaps.Add(bd)
Next
Dim FirstFrame As BitmapAndDelay = bitmaps.Get(0)
Dim FirstBmp As Bitmap = FirstFrame.bmp
If FirstBmp.Width < mBase.Width Or FirstBmp.Height < mBase.Height Then
BDGravity = Gravity.CENTER
Else
BDGravity = Gravity.FILL
End If
BDGravity = Gravity.FILL
End Sub
Public Sub Start
mBase.Visible = True
WorkIndex = WorkIndex + 1
ShowImpl(WorkIndex)
End Sub
Public Sub Stop
mBase.Visible = False
WorkIndex = WorkIndex + 1
End Sub
Public Sub CallFromResume
If mBase.Visible Then Start
End Sub
Private Sub ShowImpl(MyWorkIndex As Int)
Dim FrameIndex As Int = 0
Dim xx As Int
For xx=0 To totalFrames-1
Dim bdrawable As BitmapDrawable
Dim bd As BitmapAndDelay = bitmaps.Get(xx)
bdrawable.Initialize(bd.bmp)
bdrawable.Gravity = BDGravity
mBase.Background = bdrawable
Sleep(bd.Delay)
Next
End Sub
Public Sub GetBase As Panel
Return mBase
End Sub
Private Sub mBase_MouseClicked
CallSub(mBase, mEventName & "_" & "SingleClick")
End Sub