Italian Allungare tempo del clickLong

ivanomonti

Expert
Licensed User
Longtime User
Ragazzi sono stato in casa di cura a fare provare MIMMSos a degli anziani, a parte le risate sono sorti pochi problemi, il più delicato e il ClickLong e troppo corta la pausa del dito, i vecchietti hanno un tempo di appoggio lunghissimo e devo ovviare questo problema che salta fuori da anziano/a ad anziano/a.

E possibile parametrizzare il longClick!!! se si come.
 

Dominex

Active Member
Licensed User
Longtime User
Che io sappia il timing dello standard LongClick (il ClickLong non so cosa sia :D) non si può modificare. Poi magari salta fuori che con la libreria Reflector si può fare.

Comunque puoi allungare il tempo del LongClick semplimente gestendolo con un evento differente. Devi usare l'evento Touch dell'Activity o del Panel ove risiedono i View in questione, con le coordinate XY individui se la pressione avviene su uno di questi, e poi con la differenza del tempo tra l'evento Down e Up gestisci il LongClick.
 

ivanomonti

Expert
Licensed User
Longtime User
Ho risolto, ma il timer non andava bene da solo in quanto non fa scattare l'evento fino a che non molli il tasto (button1_up), quindi ho dovuto fare una sorta di LongClik personale

esempio in global ho dichiarato questo

B4X:
Sub Globals
        'LongClick
   Dim timer2 As String 
   Dim timer3 As String
   Dim timer4 As Timer
   Dim Period As Int
   Dim event As Int
   Period = 2500
   event = 0
End Sub

in button1_LongClik

B4X:
Sub Button1_LongClick
   event = 4
   DateTime.TimeFormat = "hh:mm:ss"
   timer2 = DateTime.Time(DateTime.Now)
   timer4.Initialize("timer4",Period)
   timer4.Enabled = True
End Sub

un button_up

B4X:
Sub Button1_Up
   If timer2.Length = 0 Then Return
   DateTime.TimeFormat = "hh:mm:ss"
   timer3 = DateTime.Time(DateTime.Now)
   Dim DateTicks As Long
   DateTicks = DateTime.TimeParse(timer3) - DateTime.TimeParse(timer2)
   If DateTicks > Period Then
      LongClickEvent
   End If
End Sub

timer di controllo period

B4X:
Sub timer4_tick
   LongClickEvent
End Sub

evento

B4X:
Sub LongClickEvent()
   Select event
   Case 0
      Return
   Case 1
                ' codice da eseguire
   Case 2
                ' codice da eseguire
   Case 3
                ' codice da eseguire
   Case 4
                ' codice da eseguire
   End Select
   ' reset LongClick
   timer2 = ""
   timer3 = ""
   timer4.Enabled = False
   event = 0
End Sub

Potrebbe andare bene anche per il Libro del nostro signor scrittore hahahah fammi sapere se lo prendi in considerazione, così mi vanto davanti ad amici hahahaha.
 
Last edited:

Dominex

Active Member
Licensed User
Longtime User
Se la tua necessità è quella che l'evento si debba avere al rilascio del Button, allora puoi fare così:

B4X:
Sub Globals
   Dim btn As Button
   Dim LongClick = 1000 As Int 'Tempo richiesto prima dell'evento LongClick
   Dim TimeClick As Long
End Sub

Sub Activity_Create(FirstTime As Boolean)
   btn.Initialize("Button")
   Activity.AddView(btn,Activity.Width/2-60dip,Activity.Height/2-30dip,120dip,60dip)
End Sub

Sub Button_Down
   TimeClick = DateTime.Now
End Sub

Sub Button_Up
   If DateTime.Now-TimeClick < LongClick Then Return
   ToastMessageShow("Evento LongClick",False)
End Sub
 

ivanomonti

Expert
Licensed User
Longtime User
No e al contrario, avere un longclick vero, che dopo x secondi parta anche se non hai rilasciato il button, perché se il dito rimane oltre il tempo deve comunque scattare.

Una persona rimane li con il dito ad aspettare 'evento (anziano o profano), a questo punto lascia, non so se mi sono spiegato, il codice da me postato e perfetto per le mie esigenze, dopo 2,5 sec scatta l'evento, anche se il dito e sopra il button, questo valore lo si può impostare da caso a caso.
 

Star-Dust

Expert
Licensed User
Longtime User
Ragazzi sono stato in casa di cura a fare provare MIMMSos a degli anziani, a parte le risate sono sorti pochi problemi, il più delicato e il ClickLong e troppo corta la pausa del dito, i vecchietti hanno un tempo di appoggio lunghissimo e devo ovviare questo problema che salta fuori da anziano/a ad anziano/a.

E possibile parametrizzare il longClick!!! se si come.
Scusa il ritardo nella risposta.
Potresti gestire la cosa con il Touch e contare il tempo
B4X:
Public Sub Panel_Touch(Action As Int, X As Float, Y As Float)
    Select Action
        Case 0
            ' Click
            T=DateTime.Now
        Case 1
            'Rilascio
            If (T-DateTime.Now)>=TempoDutata Then
                CallSub(mCallBack,"Panel_LongLongLongihissimoClick")
            End If
    End Select
End Sub
 

ivanomonti

Expert
Licensed User
Longtime User
il progetto MIM e stato abbandonato nel 2013 in quanto non poteva essere utile per le normative sulla sicurezza dei dispositivi, dovrei ancora avere il sorgente
 

Star-Dust

Expert
Licensed User
Longtime User
il progetto MIM e stato abbandonato nel 2013 in quanto non poteva essere utile per le normative sulla sicurezza dei dispositivi, dovrei ancora avere il sorgente
Cos'è un progetto MiM? le normative cambiano, si eludono o si aggirano
 

ivanomonti

Expert
Licensed User
Longtime User
Cos'è un progetto MiM? le normative cambiano, si eludono o si aggirano
MIM SOS era un progetto legato al sevizio dei bambini o disabili che in caso di problemi potevano mandare un messaggio di aiuto geolocalizzandosi, ma poi non fu accettata in quanto i dispositivi hanno quasi tutti una password e quindi in caso di lettura dei dati (ICE)(disabilità o problemi, indirizzo di casa e chi chiamare) se il telefono fosse bloccato non sarebbero potuti servire... oggi c'è SOS gia di sistema, ma ancora molto discusso.

Poi volevo estenderlo in altri casi per il monitoraggio di una terapia... un progetto molto arduo che poi da solo non puoi fare.
 
Top