Italian [risolto e grazie] B4J - ESEMPIO ANIMAZIONE

ivanomonti

Expert
Licensed User
Longtime User
questo esempio non vuole insegnare nulla a nessuno, ma per i profani come me potrebbe essere una spinta a fare qualcosa per la comunità

il pannello setting spinge il pannello form (2 pane) unica animazione ma divertente, io scrivo le mie interfaccie da codice non uso ide o che cosa ma solo codice al volo, quindi questo codice basta copiarlo interamente e metterlo in un progetto nuovo (ovviamente sostituendo quello del progetto nuovo) che vi da il risultato.

Buon divertimento.

Full code main:
#Region Project Attributes
    #MainFormWidth: 600
    #MainFormHeight: 600
#End Region

Sub Process_Globals
    Private fx As JFX
    Private MainForm As Form
    Private pn,base As B4XView
    Private bt As Button
    Private xui As XUI
    Private hide As Boolean = True
End Sub

Sub AppStart (Form1 As Form, Args() As String)
    
    MainForm = Form1
    MainForm.BackColor=fx.Colors.ARGB(200,30,30,30)
    MainForm.Show
    
    pn = xui.CreatePanel("")
    pn.Color = xui.Color_Gray
    pn.SetVisibleAnimated(2,True)
    
    base = xui.CreatePanel("")
    base.Color = xui.Color_ARGB(200,30,30,30)
    base.SetVisibleAnimated(2,True)

    MainForm.RootPane.AddNode(base,0,0,600,600)
    MainForm.RootPane.AddNode(pn,-200,0,200,600)
    
    bt.Initialize("bt")
    bt.Text = "Setting"
    base.AddView(bt,10,10,100,30)
    
End Sub

Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
    Return True
End Sub

Sub bt_action
    animatePane(pn,base)
End Sub

Sub animatePane(pna As B4XView,basea As B4XView)
    If hide= False Then
        hide= True
        For i=0 To 200
            pna.SetLayoutAnimated(200,-200,0,200,600)
            basea.SetLayoutAnimated(200,0,0,600,600)
        Next
    Else
        hide=False
        For i=0 To 200
            pna.SetLayoutAnimated(200,0,0,200,600)
            basea.SetLayoutAnimated(200,200,0,600,600)
        Next
    End If
End Sub

 

Sagenut

Expert
Licensed User
Longtime User
I cicli For non servono.............a meno che non vuoi che faccia quel ciclo per 200 volte.
B4X:
Sub animatePane(pna As B4XView,basea As B4XView)
    If hide = False Then
        hide= True
        pna.SetLayoutAnimated(200,-200,0,200,600)
        basea.SetLayoutAnimated(200,0,0,600,600)
    Else
        hide=False
        pna.SetLayoutAnimated(200,0,0,200,600)
        basea.SetLayoutAnimated(200,200,0,600,600)
    End If
End Sub
 

Star-Dust

Expert
Licensed User
Longtime User
Esatto.
Io avrei fatto il trascinamento da mouse senza bisogno del bottone, magari con la XUI per avere lo stesso in B4A/B4I e fare il trascinamento del menu con il Touch.

Comunque ci accontentiamo di quello che passa il convento ? ?
 

Sagenut

Expert
Licensed User
Longtime User
Dipende da cosa voleva ottenere.
Probabilmente voleva proprio quella animazione.
 

Star-Dust

Expert
Licensed User
Longtime User
Dipende da cosa voleva ottenere.
Probabilmente voleva proprio quella animazione.
Certo, è vero.
Ma mi pare troppo complicato come algoritmo, per un animazione del genere, io lo avrei fatto più semplice

B4X:
Sub animatePane(pna As B4XView,basea As B4XView)
    pna.SetLayoutAnimated(200,-(pna.Left+200),0,200,600)
    basea.SetLayoutAnimated(200,0,200-basea.Left,600,600)
End Sub
 

ivanomonti

Expert
Licensed User
Longtime User

ho visto un esempio ed era dentro un loop hahahhahah come ora provo il tuo, se funziona ti offro un panzerotto hahahahah
 

Star-Dust

Expert
Licensed User
Longtime User
@ivanomonti visto che @Star-Dust è siculo, il panzerotto lombardo non può competere con l'arancino di riso siciliano
Gli arancini li posso fare anch'io qui perché tutti siamo esperti cuochi di arancini.

Lo mangio volentieri il panzerotto settentrionale ??
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…