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

2020-04-18_145349.png
2020-04-18_145413.png
 

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
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
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
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

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 ??
 
Top