Italian Qualche chiarimento sul layout.

PakoT52

Active Member
Licensed User
Longtime User
Salve , stavo studiando un poco come adattare un layout su più dispositivi , sono arrivato alla conclusione che per non dover rifare il layout per più risoluzioni conviene farlo tramite codice . Ho cercato un poco in giro e ho trovato un poco di materiale solo che ho le idee un poco confuse , se io mettiamo caso voglia fare un ImageView che occupa tutto lo schermo , devo andare su Designer ---> Designer Script e scrivere :
AutoScaleAll
ImageView1.Height = 100%y
ImageView1.Top = 0%x
ImageView1.Width= 100%x
ImageView1.Left =0%x
Cosi dovrei visualizzare l'imageview1 in tutti i device su tutto lo schermo ? Poi volevo capire alcuni scrivevano il codice nel Designer Script altri lo scrivevano nel layout , che differenza c'è ? Poi volevo capire se devo sempre esprimere i valori in % oppure capita che debba esprimerli i dip ? Se si in quali casi ? E non ho ben capito come funzionano le x e le y , sono come negli assi cartesiani ? Per ora credo che vi abbia già fatto molte domande . Ciao e grazie :)
 

klaus

Expert
Licensed User
Longtime User
Well, I will try to help you, but unfortunately in english.
%x, %y or dip ?
%x means % of the current screen with and %y means % of the current screen height.
10%x on a screen with a 320 pixels width it will have a width of 32 pixels
on a screen with a 480 pixels width it will have a width of 48 pixels
on a screen with a 1080 pixels width it will have a width of 108 pixels
which means in all cases 10% of the screen width, the same for %y and the height.

dip depends on the device 'density'
this means that for 100dip the physical dimensions will be the same indepenant of the screen density.
160dip on a screen with 160 dots per inch will have a dimension of 1 inch
it will have the same dimension (1 inch) on a device with 240 or 320 dots per inch !

When you use AutoScaleAll you should know what is hidden behind it.
Have a look at chapter 8.10 AutoScale in the Beginner's Guide (unfortunately in english).

Best regards.
 

PakoT52

Active Member
Licensed User
Longtime User
Thank you so much . for reply . It's ok if i use %y and %x for application design ? I haven't problem with different size devices , true ? Now i'm reading your beginner guide . Thank you
 

lock255

Well-Known Member
Licensed User
Longtime User
Con dispositivi di dimensioni diverse non vedrai il layout esattamente uguale a quello progettato sul tuo dispositivo. La soluzione è far girare l'app in un emulatore con dispositivi di diverso layout e trovare il giusto compromesso.
 

imgsimonebiliato

Well-Known Member
Licensed User
Longtime User
Con dispositivi di dimensioni diverse non vedrai il layout esattamente uguale a quello progettato sul tuo dispositivo. La soluzione è far girare l'app in un emulatore con dispositivi di diverso layout e trovare il giusto compromesso.
Ciao, hai qualche emulatore da consigliarmi per testare l'app?
 

rproberto

Member
Licensed User
Longtime User
ciao
vale quello che ha spiegato Klaus, anch'io uso nel designer la percentuale....


'All variants script
AutoScaleAll


AutoScale(PSelezioneTel)
AutoScale(IVSelezione)

PSelezioneTel.Top = 0%y
PSelezioneTel.Left = 0%x
PSelezioneTel.Width = 100%x
PSelezioneTel.Height = 100%y

IVSelezione.Top = 0%y
IVSelezione.Left = 65%x
IVSelezione.Width = 35%x
IVSelezione.Height = 70%y
 

maxware

Well-Known Member
Licensed User
Longtime User
ciao raga
io faccio cosi
es. posizionamento oggetto
oggetto.SetLeftAndRight(27%x,95%x) per dimensioni orizzontale
oggetto .SetTopAndBottom(0,100%Y) per dimensioni verticali

es. mettere 3 immgini in orizzontale e centrarte in modo che occupino 100% della dimensione delle schermo in orizzontale
b = 33%x
ImageView1.SetLeftAndRight(0, b)
ImageView2.SetLeftAndRight(b, 2 * b)
ImageView3.SetLeftAndRight(b *2 , 3 * b)

poi ho usato una particolarità per il testo nelle listview...ossia ho parametrizzato il valore del size del text in modo che l'utente può impostare la grandezza del font a piacimento

Ciaooo
Mamo
 

imgsimonebiliato

Well-Known Member
Licensed User
Longtime User
Quello di base presente su B4A (AVD Manager) è ottimo.
Ok ma non capisco come vanno configurati perchè alcuni mi partono, altri invece rimane la schermata nera :(
 

imgsimonebiliato

Well-Known Member
Licensed User
Longtime User
Puoi anche premere F6 dal design per avere un anteprima via web di cone si vede su vari dispositivi Mamo
Io però non uso il designer, gestisco tutto da codice
 

imgsimonebiliato

Well-Known Member
Licensed User
Longtime User
Alcune volte si bloccano; a meno che non ti succeda spesso, non dovrebbe essere colpa di come li hai configurati.

Ti consiglio di scegliere Intel come processore emulato in modo da poter utilizzare questo (velocizza l'emulatore).
Non è che si bloccano. Proprio non partono
 

Touch

Active Member
Licensed User
Longtime User
....
poi ho usato una particolarità per il testo nelle listview...ossia ho parametrizzato il valore del size del text in modo che l'utente può impostare la grandezza del font a piacimento

Ciaooo
Mamo

Cosa intendi per parametrizzare il valore size del text?
Puoi postare un esempio?
Con il testo ho sempre problemi di adattamento nei vari layout.
Grazie.
 

imgsimonebiliato

Well-Known Member
Licensed User
Longtime User
Avevi scritto "rimane la schermata nera": non intendi dire che l'emulatore parte ma il suo display rimane nero?
Si è così.. Premo start, ma non si carica nemmeno come sugli altri che compare la scritta "Android" mentre inizializza
 

imgsimonebiliato

Well-Known Member
Licensed User
Longtime User
Ma, come hai scritto, a volte funzionano, altre no.
Segnati i parametri che utilizzi e, quando l'emulatore non funziona, riportali qui.
Intendevo che alcuni emulatori funzionano altri no
 

LucaMs

Expert
Licensed User
Longtime User
Intendevo che alcuni emulatori funzionano altri no

Sì, ho capito, infatti se rileggi la mia prima risposta...!

Anche a me succedeva (vatti a ricordare se ho cambiato qualcosa).

L'unica cosa da fare è "conservare" le impostazioni che hai usato e rivedere (e magari postarle) quando l'emulatore non funziona.

La creazione dell'emulatore la inizi partendo dal Tab "Device definitions" (tasto "Create AVD")? Se fai così, ti imposta automaticamente alcuni settaggi.
 

imgsimonebiliato

Well-Known Member
Licensed User
Longtime User
Sì, ho capito, infatti se rileggi la mia prima risposta...!

Anche a me succedeva (vatti a ricordare se ho cambiato qualcosa).

L'unica cosa da fare è "conservare" le impostazioni che hai usato e rivedere (e magari postarle) quando l'emulatore non funziona.

La creazione dell'emulatore la inizi partendo dal Tab "Device definitions" (tasto "Create AVD")? Se fai così, ti imposta automaticamente alcuni settaggi.
Alcuni si, altri no
 
Top