Poi ho guardato di nuovo l'originale; è in portrait e, mentre muove il gruppo da spostare, sotto sembra esserci qualcosa di simile ad una HorizontalScrollView.
P.S. sono andato a verificare e HorizontalScrollView non è roba specifica di b4a ma fa parte proprio di Android, quindi è sicuramente quello.
HorizzontalScrollVire, ScrollView, ScrollView2D non funzionano, perché intercettano il Touch e mi interrompono il movimento (Mi da Action=3 interruzione movimento) ma ho risolto con un semplice panel che mi gestisco io lo scroll in orizzontale e verticale. Funziona bene.
Mi rimane adesso di fare l'inserimento della cella (o celle) dopo lo spostamento
HorizzontalScrollVire, ScrollView, ScrollView2D non funzionano, perché intercettano il Touch e mi interrompono il movimento (Mi da Action=3 interruzione movimento) ma ho risolto con un semplice panel che mi gestisco io lo scroll in orizzontale e verticale. Funziona bene.
Mi rimane adesso di fare l'inserimento della cella (o celle) dopo lo spostamento
Quindi ti basta rilevare, tramite le coordinate, la view che si trova sotto la view trascinata; esisterà già qualcosa tipo: GetViewFromXY? Sarebbe l'ideale.
[ehm... guardare il sorgente originale potrebbe aiutare?]
Si potrebbe, ma non ci capisco molto bene. Sono arrugginito con Java. Il tempo che lo studio .. faccio prima a pensare un modo mio.
Sto facendo progressi in ogni caso. Spostare una colonna intera é facile, ogni colonna ha la larghezza di 200dip, quindi calcolo cosa deve sostituire dividendo X (_Touch(action as int, X as float, Y as Float..) per 200dip.
uhm... ma se usi i dip poi le view avranno dimensione fissa (in cm) su qualunque dispositivo, no?
Cmq la faccenda ScrollView, HorizontalScrollView che si pappa il touch... il tizio l'ha risolta di sicuro. Cercando su b4x ho visto che si nega questa possibilità ma... "io non creto"
Io ho cercato sul forum e qualcuno diceva che quando ti da Action=3 vuol dire che il touch viene rilasciato dal tuo oggetto e intercettato da un altro, nel mio caso lo scrollView2D. Appena ho messo un panel non mi ha dato più Action=3. In ogni caso Ho messo Pane_Touch() e lo sto usando ne più ne meno come ScrollView facendolo scorrere in base al tocco. Pochissime righe.
E non mi intercetta il Touch delle label
B4X:
Sub MyPanel_Touch (Action As Int, X As Float, Y As Float)
Dim XX,YY As Int
Select Action
Case 0 ' ACTION_DOWN
Sx=X
Sy=y
Case 1 ' ACTION_UP
Case 2 ' ACTION_MOVE
YY=MyPanel.top+y-Sy
XX=MyPanel.Left+x-Sx
If XX>0 Then XX=0
If YY>50dip Then YY=50dip
If YY+MyPanel.Height<100%y Then YY=100%y-MyPanel.Height
If XX+MyPanel.Width<100%x Then XX=100%x-MyPanel.Width
MyPanel.Top=YY
MyPanel.Left=XX
Case 3
'Log("interrupt intercept")
End Select
End Sub
Non c'ho trafficato granché (anche se è interessante) ma sono certo che su b4x se ne sia parlato molto (del resto, anche la CustomListView DOVREBBE fare qualcosa del genere, penso, quindi magari dai un'occhiata a quella classe).
Ma bada che stai usando i dip, mentre dovresti usare delle percentuali (magari nella Activity_Create ricavi un int da queste, vedi tu) perché altrimenti gli "oggetti" avrebbero le stesse dimensioni sia su un tablet da 500 pollici che su uno smartphone da 2 !
Nelle ScrollView2D non intercetto io il touch, Anzi ho messo come nome evento "" ma ugualmente lo intercetta l'oggetto per effettuare lo scorrimento orizzontale/verticale
Non usare la ScrollView2D, comunque; secondo me è fastidiosa, se hai una sorta di tabella, perché il movimento normalmente lo fai in orizzontale O in verticale, non in obliquo, cioè libero. Dovrebbe essere qualcosa come Excel.