Italian Aiuto con il multitouch!!

rubino25

Member
Licensed User
Longtime User
Sono sempre io... Come posso utilizzare la libreria per il multitouch insieme ai pulsanti? Posso "comandare" più oggetti come slider, button, text ?
Ho letto i tutorial ma proprio non capisco..
 
D

Deleted member 103

Guest
Come posso utilizzare la libreria per il multitouch insieme ai pulsanti?
Scusa ma non capisco cosa vuoi fare, ti puoi spiegare un pò meglio?
 

rubino25

Member
Licensed User
Longtime User
Certo.. Chiedo scusa! Devo creare una sorta di "radiocomando" per comandare arduino tramite bluetooth. Una prima versione è pronta e funzionante, ma vorrei abilitare il multitouch e gestire i movimenti come se fosse un vero e proprio radiocomando.. Quindi due seekbar verticali per il canale destro e sinistro, qualche pulsante e poco altro.. Per ora sono riuscito a fare questo.. Ma non mi soddisfa per niente..
 
D

Deleted member 103

Guest
Non penso che con il Multi-Touch possa funzionare quello che vuoi fare tu, almeno io non ci sono riuscito.

Prova questa versione senza Multi-Touch e dimmi se potrebbe andare bene.
 

Attachments

  • Esempio_multi_1.zip
    8.9 KB · Views: 283

rubino25

Member
Licensed User
Longtime User
Ho guardato il tuo esempio.. ma così comè non serve al mio scopo! :sign0013:
Con l'aiuto di erel ho fatto questo:
B4X:
Sub Globals   
    Dim g As Gestures
    Dim cvs As Canvas
    Dim SeekBarsColors() As Int
    SeekBarsColors = Array As Int(Colors.Yellow, Colors.Blue, Colors.red)
   Dim back_pnl As Panel
   Dim img1 As ImageView
   Dim img2 As ImageView
   Dim Panel1 As Panel
   Dim Panel2 As Panel
   Dim lbl1 As Label
   Dim lbl2 As Label
   Dim lbl_action1 As Label
   Dim lbl_action2 As Label
   Dim mapped As Int 
End Sub

Sub process_globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("main")
    g.SetOnTouchListener(back_pnl, "back_pnl_GesturesTouch")
End Sub
Sub back_pnl_GesturesTouch(View As Object, PointerID As Int, Action As Int, x As Float, y As Float) As Boolean
    For i = 0 To g.GetPointerCount - 1
        Dim x, y As Float
        x = g.GetX(i)
        y = g.GetY(i)
        If x > 0dip AND x < 40dip Then
            MoveSlider(0, y)
         lbl_action1.Text = Action
         If Action = 6 OR Action = 1 Then
            MoveSlider(0, 212)
         End If
        Else If x > 489dip AND x < 533dip Then
            MoveSlider(1, y)
         lbl_action2.Text = Action
         If Action = 6 OR Action = 1 Then
            MoveSlider(1, 212)
         End If
        End If
    Next
    Return True
End Sub

Sub MoveSlider(SliderNum As Int, y As Float)
    Select SliderNum
      Case 0
         If y >= 423 Then
            Return
         End If   
         'return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
         If y < 212 Then
            mapped = (y - 212) * (255 - 0) / (11 - 212) + 0
         Else If y > 212 Then
            mapped = (y - 212) * (255 - 0) / (420 - 212) + 0
         Else 
            mapped = 0   
         End If   
         img1.Top = y
         lbl1.Text = "Y left value: " & y & "Map. value: " & mapped
         Panel1.Invalidate
      Case 1
         If y >= 423 Then
            Return
         End If
         If y < 212 Then
            mapped = (y - 212) * (255 - 0) / (11 - 212) + 0
         Else If y > 212 Then
            mapped = (y - 212) * (255 - 0) / (420 - 212) + 0
         Else 
            mapped = 0   
         End If   
         img2.Top = y
         lbl2.Text = "Y right value: " & y & "Map. value: " & mapped
         Panel2.Invalidate 
   End Select      
End Sub

Lui mi ha fornito il codice per gestire, all'inizio du canvas separati, poi ci ho tirato fuori questo.. Non mi rimane che aggiungere la parte per la comunicazione seriale e sono a posto! :icon_clap::icon_clap:
In sostanza il multitouch, credo per ora, non funziona sulle view normali.. Quindi devi creare tutto per conto tuo..
 

Attachments

  • slider.zip
    8.2 KB · Views: 288
Top