Hello!
I would like to ask if it's possible to have a startup splash screen and loading/initializing in the background the MainForm, so it's ready to show it!
I have seen Erel's example but I haven't found a way to load the MainForm displaying the splash concurrently and hiding the MainForm.
In B4XPages projects it is always better not to add code to the Main (which is a Form in B4J, an Activity in B4A and I think, not having it, a Page in B4i).
I think you could use the B4XMainPage as a splash screen and load the second page, which would become the main page of your project, with:
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.Resizable = False
MainForm.SetFormStyle("TRANSPARENT")
MainForm.Show
Dim PagesManager As B4XPagesManager
PagesManager.Initialize(MainForm)
End Sub
B4XMainPage:
Sub Class_Globals
Private Root As B4XView
Private xui As XUI
Dim Page1 As FirstPage
Dim timSplash As Timer
End Sub
Public Sub Initialize
' B4XPages.GetManager.LogEvents = True
End Sub
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
Root.LoadLayout("MainPage")
CSSUtils.SetBackgroundImage(B4XPages.GetNativeParent(Me).RootPane, File.DirAssets, "B4R_512_512_transparent.png")
'B4XPages.GetNativeParent(Me).RootPane.Alpha = 0
'B4XPages.GetNativeParent(Me).RootPane.SetAlphaAnimated(2000, 1)
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear
timSplash.Initialize("timSplash", 500)
timSplash.Enabled = True
End Sub
Sub timSplash_Tick
timSplash.Enabled = False
Page1.Initialize
B4XPages.AddPageAndCreate("Page1", Page1)
B4XPages.ShowPageAndRemovePreviousPages("Page1")
End Sub
FirstPage:
Sub Class_Globals
Private Root As B4XView 'ignore
Private xui As XUI 'ignore
End Sub
'You can add more parameters here.
Public Sub Initialize As Object
'loading data
For i = 0 To 1000000
Log(Rnd(i, i+100))
Next
Return Me
End Sub
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
'load the layout to Root
Root.LoadLayout("2")
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.