Build1=Default,b4a.example File1=Main_Layout.bal FileGroup1=Default Group Group=Default Group Library1=core Library2=xui ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~ Module1=AnalogClock Module2=Starter NumberOfFiles=1 NumberOfLibraries=2 NumberOfModules=2 Version=13 @EndOfDesignText@ #Region Project Attributes #ApplicationLabel: Orologio Analogico #VersionCode: 1 #VersionName: 1.0 #CanInstallToExternalStorage: False #End Region #Region Activity Attributes #FullScreen: False #IncludeTitle: True #End Region Sub Process_Globals Private Timer1 As Timer Private Running As Boolean = False Private StartTime As Long = 0 Private ElapsedTime As Long = 0 End Sub Sub Globals Private Canvas1 As Canvas Private Panel1 As Panel Private BtnStart As Button Private BtnPause As Button Private BtnReset As Button Private BtnSync As Button Private lblElapsedTime As Label Private pnlClock As Panel Private Timer1 As Timer Private myClock As AnalogClock Log("lblElapsedTime nel Sub Globals: " & lblElapsedTime.IsInitialized) End Sub 'Sub Activity_Create(FirstTime As Boolean) ' Activity.LoadLayout("Main_Layout") 'Layout file to be created in the designer. ' Log("Layout caricato correttamente.") ' ' ' Impostazioni Timer ' Log("Panel1 inizializzato: " & Panel1.IsInitialized) ' Log("Numero di viste in Panel1: " & Panel1.NumberOfViews) ' ' ' Sincronizza inizialmente ' SynchronizeClock 'End Sub Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("Main_Layout") Log("Layout caricato correttamente.") 'Inizializza l'orologio myClock.Initialize(pnlClock, 50) ' L'orologio avrà un diametro pari al 50% della larghezza del pannello ' Imposta il timer per aggiornare l'orologio Timer1.Initialize("Timer1", 1000) ' Aggiornamento ogni secondo Timer1.Enabled = True ' ' Cerca tra tutte le viste dell'Activity ' For i = 0 To Activity.NumberOfViews - 1 ' Dim v As View = Activity.GetView(i) ' Log("Vista trovata: " & v) ' ' ' Controlla se la vista è un Label ' If v Is Label Then ' Dim tempLabel As Label = v ' Log("Label trovato: " & tempLabel.Text) ' If tempLabel.Text = "Tempo: 00:00:00" Then ' Verifica basata sul testo iniziale ' lblElapsedTime = tempLabel ' Log("lblElapsedTime assegnato correttamente!") ' End If ' End If ' Next End Sub Sub Timer1_Tick myClock.DrawClock End Sub Sub Activity_Resume End Sub Sub Activity_Pause (UserClosed As Boolean) End Sub ' Disegna l'orologio Sub DrawClock Canvas1.Initialize(Activity) Dim now As Long = DateTime.Now Dim Hours As Int = DateTime.GetHour(now) Mod 12 Dim Minutes As Int = DateTime.GetMinute(now) Dim Seconds As Int = DateTime.GetSecond(now) ' Centro Dim x As Int = Activity.Width / 2 Dim y As Int = Activity.Height / 2 Dim Radius As Int = Min(x, y) - 10 ' Cancella il canvas Canvas1.DrawColor(Colors.White) ' Cerchio esterno Canvas1.DrawCircle(x, y, Radius, Colors.Black, False, 5) ' Lancetta ore Dim HourAngle As Float = -90 + Hours * 30 + Minutes / 2 DrawHand(x, y, Radius * 0.5, HourAngle, 8, Colors.Black) ' Lancetta minuti Dim MinuteAngle As Float = -90 + Minutes * 6 DrawHand(x, y, Radius * 0.7, MinuteAngle, 5, Colors.Blue) ' Lancetta secondi Dim SecondAngle As Float = -90 + Seconds * 6 DrawHand(x, y, Radius * 0.9, SecondAngle, 2, Colors.Red) End Sub Sub DrawHand(x As Int, y As Int, length As Float, angle As Float, width As Int, color As Int) Dim endX As Float = x + length * CosD(angle) Dim endY As Float = y + length * SinD(angle) Canvas1.DrawLine(x, y, endX, endY, color, width) End Sub ' Aggiorna l'orologio e il cronometro 'Sub Timer1_Tick ' DrawClock ' If lblElapsedTime.IsInitialized Then ' DrawClock ' If Running Then ' ElapsedTime = DateTime.Now - StartTime ' lblElapsedTime.Text = "Tempo: " & FormatElapsedTime(ElapsedTime) ' End If ' Else ' Log("lblElapsedTime non è inizializzato.") ' End If ' ' ' ' 'End Sub ' Formatta il tempo in HH:MM:SS Sub FormatElapsedTime(ms As Long) As String Dim seconds As Int = ms / 1000 Dim minutes As Int = seconds / 60 Dim hours As Int = minutes / 60 seconds = seconds Mod 60 minutes = minutes Mod 60 Return NumberFormat(hours, 2, 0) & ":" & NumberFormat(minutes, 2, 0) & ":" & NumberFormat(seconds, 2, 0) End Sub ' Pulsante Start Sub BtnStart_Click If Not(Running) Then Running = True Timer1.Initialize("Timer1",1000) Timer1.Enabled = True StartTime = DateTime.Now - ElapsedTime End If End Sub ' Pulsante Pause Sub BtnPause_Click Running = False End Sub ' Pulsante Reset Sub BtnReset_Click Running = False ElapsedTime = 0 lblElapsedTime.Text = "Tempo: 00:00:00" End Sub ' Pulsante Sync Sub BtnSync_Click SynchronizeClock End Sub ' Sincronizza l'orologio Sub SynchronizeClock DrawClock End Sub