Italian Domanda per programmatori

ivanomonti

Expert
Licensed User
Longtime User
@Sagenut temo di essermi perso un pò....

Intendi dire senza usare il Designer? Questo non so come farlo, o forse non ho capito.

Per quanto riguarda le lezioni di @ivanomonti non riesco a trovare lo spinner in B4a. 😓 😓 😓

esiste lo spinner

2020-05-07_172926.png
 

Sagenut

Expert
Licensed User
Longtime User
Per usarlo senza dover installare il B4A-BRIDGE puoi attivare le Opzioni Sviluppatore e abilitare il DEBUG USB da lì.
Per attivare il Menù Sviluppatore vai in Informazioni e cerca nelle info della versione Android il riquadro con la BUILD.
Cliccalo 8 volte e il Menù apparirà tra le Impostazioni.
Se quando usi B4A usi più cellulari o cellulari ed emulatori ti verrà chiesto su quale dispositivo deve essere inviato il progetto.
Se per caso non ti appaiono i LOG di debug devi fare Connect ed indicare il dispositivo che vuoi abilitare al LOG in quel momento.
La prima volta che colleghi il cellulare dopo aver attivato il DEBUG USB dovrai dare una autorizzazione.
Se il cellulare è il tuo puoi anche mettere RICORDA SEMPRE così non te lo chiederà più alle prossime connessioni.
Questa info credo che sarà utile anche a @dragonblu19
 

dragonblu19

Member
Licensed User
@Sagenut scusa ma non riesco a seguirti come fare a creare un button senza usare il designer. Anche nell'esempio che mi hai mandato il layout è caricato. 😭

Facciamo un passo alla volta. Iniziamo un nuovo progetto.

prima cosa

B4X:
Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    
    Private btn As Button
    
End Sub

giusto?
 

ivanomonti

Expert
Licensed User
Longtime User
fatto l'esempio di ieri per android, anche se per me sarebbe bene iniziare con b4j
 

Attachments

  • Lezione 1 android.zip
    3.8 KB · Views: 199

dragonblu19

Member
Licensed User
@ivanomonti ciao, scusa ma ho vistoc he nel tuo esempio hai messo la SeekBar, non lo spinner.

Quindi devo mettere la SeekBar?
Nella SeekBar c'è anche il ValueChanged, va selezionato anche quello?
 

Attachments

  • seek.jpg
    seek.jpg
    132.3 KB · Views: 154

ivanomonti

Expert
Licensed User
Longtime User
@ivanomonti ciao, scusa ma ho vistoc he nel tuo esempio hai messo la SeekBar, non lo spinner.

Quindi devo mettere la SeekBar?
Nella SeekBar c'è anche il ValueChanged, va selezionato anche quello?
no guarda che su android si chiamano SeekBar1 io ho sbagliato (volutamente) a chiamarli spinner :cool: volevo vedere se li trovavi da solo :p

Quindi prima regola come ti ho detto nel nostro incontro con TeamView devi conoscere bene IDE di sviluppo e i suoi object, ogni singolo object ha delle proprietà, alcune sono globali (ripeture in tanti object) altre sono proprietarie, dopo di che disegnarti una app sul foglio (che non avrai fatto) e poi passare allo sviluppo del compito.

Un bravo allievo non aspetta i compiti... e tu puoi esserlo, quindi continua a chiedere (sempre qui in questo post) ma facci vedere i progressi., ora ti faccio la stessa versione senza usare il designer.. poi voglio vedere del tuo

2020-05-07_194219.png
 

dragonblu19

Member
Licensed User
no guarda che su android si chiamano SeekBar1 io ho sbagliato (volutamente) a chiamarli spinner
Ho capito quello che mi volevi dire, hai ragione.... 😓 😓

IDE di sviluppo
sono proprietarie
Me lo potresti spiegare in parole più semplici in modo da capire così la prossima volta so di cosa parliamo... Per capirci tu è come se mi avessi detto che questa è H2o, in parole semplici è acqua 😀😀 (me lo potresti spiegare così almeno una volta così la prossima volta che me li nomini so di cosa parliamo grazie)

disegnarti una app sul foglio (che non avrai fatto)
Su questo ti devo contraddire perchè l'ho fatto, ma credo che per arrivare a fare quello che voglio devo ancora imparare bene le basi....

PS: nel posto precedente ti avevo fatto una domanda ma non mi hai risposto:
Nella SeekBar c'è anche il ValueChanged, va selezionato anche quello? E cosa sarebbe?
 

ivanomonti

Expert
Licensed User
Longtime User
Cavoli, ma sono rimasti ancora i dip da scrivere ? direi una cagata visto che il colpilatore mi da errore potrebbe prendersi i numeri come dip di default e quando c'è % cambia il suo ragionamento in %... vabbè mia considerazione.

ragazzi 12 pt di font come si calcolano in dip, decimali o come?

@dragonblu19 questo e tutto da codice, senza ide grafico... fino a lunedì hai da studiare :eek:

B4X:
#Region  Project Attributes 
    #ApplicationLabel: B4A Example
    #VersionCode: 1
    #VersionName: 
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: unspecified
    #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.

End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Private Button1 As Button
    Private EditText1 As EditText
    Private Label1 As Label
    Private SeekBar1 As SeekBar
    Private SeekBar2 As SeekBar
    Private SeekBar3 As SeekBar
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    'Activity.LoadLayout("Layout1")
    
    Label1.Initialize("")
    Label1.Text = "Lezione 1"
    Label1.TextSize=(Label1.Height*50/100)
    Label1.TextColor=Colors.Black
    
    Activity.AddView(Label1,10dip,10dip,300dip,50dip)
    
    SeekBar1.Initialize("seekBar1")
    SeekBar1.max=100
    SeekBar1.Value=50
    Activity.AddView(SeekBar1,10dip,160dip,300dip,30dip)
    
    SeekBar2.Initialize("seekBar2")
    SeekBar2.Max=255
    SeekBar2.Value=255
    Activity.AddView(SeekBar2,10dip,200dip,300dip,30dip)
    
    SeekBar3.Initialize("seekBar3")
    SeekBar3.Max=255
    SeekBar3.Value=0
    Activity.AddView(SeekBar3,10dip,240dip,300dip,30dip)
    
    EditText1.Initialize("EditText1")
    EditText1.Text = "Prova a divertirti"
    Activity.AddView(EditText1,10dip,340dip,300dip,30dip)
    
    Button1.Initialize("EditText1")
    Button1.Text = "Print Label"
    Activity.AddView(Button1,10dip,380dip,300dip,40dip)
    

    
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub SeekBar3_ValueChanged (Value As Int, UserChanged As Boolean)
    Label1.Color=Colors.ARGB(255,Value,255-Value,Value)
End Sub

Sub SeekBar2_ValueChanged (Value As Int, UserChanged As Boolean)
    Label1.TextColor = Colors.ARGB(255,Value,255-Value,Value)
End Sub

Sub SeekBar1_ValueChanged (Value As Int, UserChanged As Boolean)
    Label1.TextSize=(Label1.Height*Value/100)
End Sub

Sub Button1_Click
    Label1.text = EditText1.Text
End Sub
 

Sagenut

Expert
Licensed User
Longtime User
@Sagenut mi sto perdendo 😭 😭
Ti avevo postato questo codice estratto dall'esempio XCLV
B4X:
'Crea una View che gestisce le immagini
Dim iv1 As ImageView
  
'Inizializza l'oggetto e gli assegna un EventName (quì nullo)
iv1.Initialize("")
  
'Definisce le dimensioni dell'oggetto
iv1.SetLayout(0, 0, 60dip, 60dip)
  
'Aggiungiamo fisicamente l'oggetto al Pannello
p.AddView(iv1, 0, 0, iv1.Width, iv1.Height)
Per creare ed aggiungere un Button sulla Activity metti questo in Activity_Create
B4X:
Dim btn As Button
btn.Initialize("giusto")
btn.Text = "IO SONO IL NUMERO 0"   
btn.TextColor = Colors.Black
Activity.AddView(btn, 0, 0, 200, 50)
Non ti sembrano MOLTO simili? ;)
 

LucaMs

Expert
Licensed User
Longtime User
@dragonblu19, non dare retta a quei due ("Attenti a quei due") 😄, non prendere la pessima abitudine di creare delle View nel codice sorgente ed aggiungerli alle Activity sempre da codice, usa il Designer!!!

Anche quando usi xCustomListView: il contenuto di ogni elemento (item) di questo, crealo nel Designer!

Scherzo, ragazzi; apprezzo molto l'aiuto e i consigli che gli state dando, ma davvero usate di più il Designer (e ve lo dice uno che lo ha contestato non poco e non poche volte ha "litigato" con Erel proprio su questo argomento ma in passato!).
 

Sagenut

Expert
Licensed User
Longtime User
Infatti non deve essere una abitudine.
La normalità è creare il Layout dal Designer.
Ma per qualche idea potrebbe essere utile sapere di poter aggiungere qualcosa al volo anche da codice.
 

ivanomonti

Expert
Licensed User
Longtime User
@LucaMs io non mi trovo con designer perchè oramai scrivo tutto a codice, ho notato che mentre scrivo da codice e faccio da designer con quest'ultimo lavoro il doppio, crea il layout, metti gli obiect, nominali, dagli il parent, mettere i parametri che desideri alla fine l'ho scritto a codice in un terzo di tempo.

Mi hanno sempre fucilato per questo, perché poi uno ci deve mettere mano e cerca il layout hahahah e non lo trova quando poi e tutto li nel codice, anche le immagini quando non voglio avere file da inviare (dimentico sempre) le scrivevo in base64 come stringa, alla fine i miei lavori hanno sempre funzionato alla grande (non è un vanto ma realtà).

Ovvio che se sei alle prime armi meglio da subito imparare ad usare il designer. anche la mia libreria è tutto codice, con designer non sarei stato capace
 

Sagenut

Expert
Licensed User
Longtime User
@ivanomonti nello spinner va selezionato anche ItemClick??
ItemClick è un Evento dello Spinner.
Lo devi selezionare se vuoi che il Designer crei per te la Sub per gestire la selezione di un elemento dallo Spinner.
 

LucaMs

Expert
Licensed User
Longtime User
con quest'ultimo lavoro il doppio, crea il layout, metti gli obiect, nominali, dagli il parent, mettere i parametri che desideri alla fine l'ho scritto a codice in un terzo di tempo.
Per "object" immagino che tu volessi dire "Views", che puoi posizionare e dimensionare facilmente col mouse, anziché scrivere:
Activity.AddView(Label1, ???, ???, ???, ???).
"Nominali" - scrivere il nome nel Designer "costa" quanto scriverlo nel sorgente.
Il parent è automatico.

Piccolo particolare; scrivi tutto il tuo bel codice a manina per la creazione di un bel layout, magari usando pure le percentuali. Poi ti accorgi che vuoi aggiungere una View e posizionarla tra due View già create da codice, in orizzontale, e tra altre due, sempre create da codice, in verticale. E vai, devi riscrivere come minimo tutte le Left & Top di almeno 4 View create da codice! Nel Designer... le prendi, le sposti col mouse ed inserisci la nuova View.

Altra cosetta: puoi copiare delle View (nella Clipboard di Windows) ed incollarle in altri Layout, perfino di una diversa piattaforma, ad esempio tra B4A e B4J.

Non è affatto vero che si faccia molto più velocemente nel creare le View da codice; è solo che non hai imparato ad usarlo 😄
Quindi, come ogni principiante, dovresti guardare bene questo tutorial:
https://www.b4x.com/etp.html?vimeography_gallery=1&vimeography_video=254439386
 

ivanomonti

Expert
Licensed User
Longtime User
@LucaMs, "devi riscrivere come minimo tutte le Left & Top" verissimo, questo però ti porta a studiare bene fin da subito cosa vuoi fare, io pago molto questo, non per questo riesco a scrivere senza dover rifare tutto il codice, ha volte sbaglio (mea culpa) ma se dovessi fare un app ad un cliente userei solo designer perchè so che i clienti non sanno mai cosa vogliono e li sarebbe un disastro, ma un lavoro come il mio (calendar) preferisco a codice mille volte. (mia personale convinzione)

ora guardo il link https://www.b4x.com/etp.html?vimeography_gallery=1&vimeography_video=254439386
 
Top