Skocz do zawartości

B4x jak sprawdzić czy button wciśnięty


Pomocna odpowiedź

Uczę się Basic for android. Poszukuję informacji czy button jest wciśnięty i przytrzymany, ewentualnie zdarzenia key_up (przechodzę z MIT AI2 i tam takie rzeczy były) Aplikacja testowa:

#Region  Project Attributes 
	#ApplicationLabel: B4A Example
	#VersionCode: 1
	#VersionName: 
	'SupportedOrientations possible values: unspecified, landscape or portrait.
	#SupportedOrientations: portrait
	#CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
	#FullScreen: true
	#IncludeTitle: false
#End Region

Sub Process_Globals
	'These global variables will be declared once when the application starts.
	'These variables can be accessed from all modules.
	Private xui As XUI
	
	Private tmr As Timer
	
End Sub

Sub Globals
	'These global variables will be redeclared each time the activity is created.
	Private button1 As Button
	Private Label1 As Label
	Private Label2 As Label
	
	Dim w As Byte
End Sub

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("Layout")
	
	tmr.Initialize("timer1", 100)
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

'*****************************************************************************

Private Sub Button1_Click
	w = w + 1
	Label1.Text = w
End Sub

Private Sub Button1_LongClick

w = w+1
tmr.Enabled  = True

End Sub


Sub timer1_Tick
	
' tutaj chcę obsługę po "podniesieniu" przycisku
	
'	If button1.text Then
'		
'		w = w + 1 
'		
'		Else
'			tmr.Enabled = False
'	End If
End Sub

 

Link to post
Share on other sites
(edytowany)

Ok problem rozwiązany udało się za pomocą składnika "panel", i to jest jedyna droga za pomocą której udaje się rozwiązać zadanie. Nie wiem czemu w b4a nie zostało dodane zdarzenie od upuszczenia buttona no ale jak niema co się lubi to się lubi co się ma 😉 Wklejam kod programu, być może ktoś będzie kiedy szukał podobnego rozwiązania. Kod jest myślę wystarczająco okomentowany aby zrozumieć działanie. @Treker przydałoby się kolorowanie składni w VBA. 

#Region  Project Attributes 
	#ApplicationLabel: B4A Example
	#VersionCode: 1
	#VersionName: 
	'SupportedOrientations possible values: unspecified, landscape or portrait.
	#SupportedOrientations: portrait
	#CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: True
#End Region

Sub Process_Globals
	'These global variables will be declared once when the application starts.
	'These variables can be accessed from all modules.
	Private xui As XUI
	
	Dim vbr As PhoneVibrate ' potrzebne do obslugi wibracji 
	Dim tmr As Timer
End Sub	


Sub Globals
	'These global variables will be redeclared each time the activity is created.
	Private btn1 As Button
	Private Label1 As Label  ' wyswietlanie stanu licznika
	Dim direction As Boolean ' kierunek zliczania 
	Dim Licznik As Int		 ' licznik testowy
	Private pnl1 As Panel    ' panel na ktorym sa umieszczone "buttony"
	Private bMinus As Label
	Private bPlus As Label
'	Private Label2 As B4XView
End Sub		


	
Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("Layout")
	Activity.Title = "Button test"
	tmr.Initialize("Btn_timer", 550)
	'pnl1.Initialize("pnl1")
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Private Sub Btn_timer_Tick
	
	Dim interval As Int
	
	interval = tmr.Interval
	
	interval = interval - 50 ' przyspiesznie licznika przy przetrzymaniu
	If interval < 50 Then
		interval = 50
	End If
	tmr.Interval = interval		

	If direction Then 		' wybor kierunku zliczania  
		Licznik = Licznik+1
		Else
			Licznik = Licznik - 1
	End If	
	
	Label1.Text = Licznik ' wyswietlenie wartosci 
	vbr.Vibrate(5)		 
	
	
End Sub
	
	


Private Sub btn1_Click 'szybki reset

Licznik = 0
Label1.Text = Licznik	
	
End Sub

	
	

Private Sub pnl1_Touch (Action As Int, X As Float, Y As Float)

	If Action = Activity.ACTION_DOWN Then
		vbr.Vibrate(5)

		If X < pnl1.Width / 2    Then ' jesli palec w tym miejscu
			direction = False
			Licznik = Licznik - 1
		
		End If
			
		If X > pnl1.Width / 2 Then
			direction = True
			Licznik = Licznik + 1
			
		End If
		Label1.Text = Licznik
		tmr.Enabled = True
	End If		
		
If Action = Activity.ACTION_UP Then ' po opuszczeniu przycisku
	tmr.Interval = 550 				' przywroc czas interwalu
	tmr.Enabled = False 			' wylacz timer 
End If
End Sub

 

button3.zip

Edytowano przez _LM_
Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.