Italian Domanda sciocca: Come caricare più main?

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Mi spiego meglio.
Sto realizzando un Video Poker dove, inizialmente (nella Main principale), appare l'intro e, una vollta cliccato, vorrei aprire nuovi progetti dove inserire vari comandi..ES:

1°) Intro;
2°) Gioco vero e proprio
3°...50°) Mini game;

Come richiamare vari .bal, chiudere i precedenti e setare,su questi, il metodo Scale?
 

LucaMs

Expert
Licensed User
Longtime User
Non devi fare altro che creare un'activity per ogni voce di menù, non richiamare altre app.
Cioè, aggiunti activity module per Intro (actIntro, per esempio, a me piace chiamarle così)

Per i bal, li carichi con loadlayout (e poi richiami Scale.ScaleAll)
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Grazie Max,avevo fatto così ma mi dava un errore perchéfacevo un richiamo sbagliato ("StartInfo" anziché "StartIntro" :p).
Perché non usi lo Scale? :eek:
Come fai se le tue app vengono visalizzate su dispositivi con pollici differenti? :confused:
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Allora sto facendo confusione, perché anche io setto tutto con le percentuali :confused:
Mi sa che è un papocchio di codice! :oops:
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Tempo fa, la mia idea era di utilizzare le percentuali, che risolverebbero tutto.
Il punto è che scriverle tutte a manina è una rotturina e si può fare una casina (sarebbe casino, ma è per la rima!).
Alura, pensai di fare così:
disegno le view col designer e, in ognuna di esse, metto come Tag il nome della view stessa.
Nella app ho (avevo) un modulo che scansionava tutta un'activity e, per ogni view, calcolava tutte le percentuali necessarie;
dopodiché creava il codice per la generazione della view, tipo:

Private edtCliente as EditText
edtCliente.Initialize("edtCliente")
acvitity.AddView(edtCliente, ....)

Quindi ottenevo tutto il codice per la costruzione delle view (avevo verificato: anziché occupare più memoria, creando il tutto via codice invece che tramite Designer, ne occupava di meno!)

Il punto era la scocciatura di dover utilizzare i Tag; sarebbe stato perfetto se avessi potuto ottenere i nomi delle view tramite codice, nel modulo "generatore".

Ah, chiaramente questo modulo serviva solo per quanto detto sopra; nell'app definitiva lo toglievo.

_______________________________________________________________________________________

Tutta 'sta pappardella per dire a Mamo che si può evitare di fare tutto a manina, utilizzando le percentuali.

Finora, non ho avuto problemi col modulo Scale.
Carico un layout e lo "scalo" con Scale.ScaleAll(Activity, True) preceduta dalla inizializzazione, se non è già stato fatto (ma dato che lo faccio nella Create del Main...!)

Solo tre cose sono da tenere a mente:
a) se disegno il layout con la variant standard, utilizzo Scale.Initialize;
se invece uso un variant adatto al mio smartphone, 480x800-1.5, uso Scale.SetReferenceLayout(480, 800, 1.5)

b) se DOPO aggiungo altre view da codice, scalo anche queste, semplicemente con scale.ScaleView(MyView)

c) se nel codice sposto o ridimensiono qualche view, utilizzerò i fattori di scala Scale.GetScaleX e Scale.GetScaleY per le nuove misure.
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciao LucaMs
le percentuali non le metto nel codice dell'activity ma nel design script , cosi almeno a me sembra + pulito cosi facendo F5 o con f6 vedo
per default i pannelli sono 480*800 ( direi che un gestionale a risoluzioni + basse sarebbe impensabile )
resta coume il fatto che prima o poi sto scale mi tocca guardarlo ma sicome sto lavorando alla Evolution e alla versiopne Pc in contemporanea mi resta pochissimo tempo ..cavolo
 

LucaMs

Expert
Licensed User
Longtime User
Dove le metti le metti, ti tocca calcolarle!
Se ad esempio metti 3 buttons in fila, larghi 90dip su un variant di 320x480, come fai?
Devi metterti a calcolare le percentuali per le larghezze e le distanze?
Quel modulo (uhm lo ripesco, da qualche parte) te lo fa automaticamente e ti scrive il codice, dichiarazione compresa.

Cmq, per ora non ho trovato problemi col modulo Scale
 

maxware

Well-Known Member
Licensed User
Longtime User
Es. dato 100% la larghezza e supponendo di voler mettere una label che occupa 50% e una text che occupa 50% scrivo
label.SetLeftAndRight(1%x, 49%)
text.SetLeftAndRight(51%x, 99%)

oppure 4 pulsanti allineati di stessa width

b = 25%x
cmd1.SetLeftAndRight(0, b)
cmd2.SetLeftAndRight(b, 2 * b)
cmd3.SetLeftAndRight(b *2, 3 * b)
cmd4.SetLeftAndRight(b *3 , 4 * b)
 
D

Deleted member 103

Guest
Nella mia App uso per la schermata principale solo un Layout e 2 script, uno per verticale uno per l'orizontale.
Uso per le view, a secondo della funzione, la percentuale o la grandezza fissa.
Come potete verdere funziona su tutti i dispositivi.
 

giannimaione

Well-Known Member
Licensed User
Longtime User
Nella mia App uso per la schermata principale solo un Layout e 2 script, uno per verticale uno per l'orizontale.
Uso per le view, a secondo della funzione, la percentuale o la grandezza fissa.
Come potete verdere funziona su tutti i dispositivi.
caro il mio Filippo siculo-tedesco ... "sei tutto chiacchere e distintivo" ;) ... puoi dare qualche indicazione in merito a questo script ?!?!?! TUTTA la comunity sarebbe felice di fare un click sul Like
 
D

Deleted member 103

Guest
Poche chiacchiere, solo fatti! ;)

Qui c'è un esempio con un layout e 2 script, uno per orizzontale e uno per vertikale.
 

Attachments

  • B4A-1Layout+2Script.zip
    7.5 KB · Views: 243
  • orizzontale.png
    orizzontale.png
    41.5 KB · Views: 240
  • verticale.png
    verticale.png
    31.8 KB · Views: 236

LucaMs

Expert
Licensed User
Longtime User
Non ho potuto caricare il tuo esempio, Filippo, perché ho la 3.20 di B4A.

Cmq, allego la mia versione, con il modulo Scale... nessuno script, nessuna percentuale, due righe di programma.
 

Attachments

  • lm_layoutscale.zip
    10.6 KB · Views: 232
Top