Italian far funzionare una applicazione ad diverse risoulizioni

fifiddu70

Well-Known Member
Licensed User
Longtime User
eccomi dinuovo con una domanda che credo sia molto fondamentale per iniziare a programmare per questi device android, sono felice possessore di un samsung galaxy s2, da poco ho anche acquistato un sony ericsson xperia mini, devo dire che utilizzo più il sony dal samsung per la sua tascabilità, ho acquistato il sony perchè la dimensione dello schermo è di 3 pollici rispetto al 4,3pollici del samsung, la domanda vhe vi pongo è questa: come faccio a realizzare un software che si adatti alle rispettive dimensioni dello schermo sia per il samung che per il sony?.
se faccio un programma per il samsung ad esempio, usando tutto lo schermo che ha e poi vorrei che questi si vedesse tutto adattato alla dimensione dello schermo del sony, come fare? datemi per favore una soluzione semplice, ma sopratutto spero che mi diate una risposta :)
comunque grazie in anticipo.
 

rubino25

Member
Licensed User
Longtime User
Ciao.. Nel designer non basta aggiungere Layout Variants la risoluzione del mini? Io non ho provato ma credo funzioni così..
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
ciao e grazie per la tua risposta, non sono molto pratico del programma, mi puoi speigare in che modo posso far questo sul design?
 

rubino25

Member
Licensed User
Longtime User
Siamo in due allora.. Se guardi nel designer, in basso a destraa, c'è scritto "New Variant".. Cliccaci e inserisci la risoluzione del mini! Altrimenti lo colleghi un attimo e vedi risoluzione e scale!
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
ho provato a fare come dici tu, la risoluzione del mini experia della sony sul designer e di 320 x 420 circa ma su scale quanto devo inserire? e poi....aggiungendo solamente questo, basta per aver il mio software funzionante sia per risoluzioni come il samsung galaxy s2 che sia su telefoni con risoluzioni inferiori?
 

rubino25

Member
Licensed User
Longtime User
Per scale non lo so ancora.. Ma se lo colleghi, cè scritto in basso a destra nel designer! Credo basti quello, perchè funziona quando ad esempio giri il telefono, però non ho provato! Io ho il gs2, ma se riesco provo anche con un sensation!
 

Teknomatica

Member
Licensed User
Longtime User
Il problema è tipico e riguarda ogni device, sia esso mobile che con schermo.
Non troverai mai una soluzione definitiva automatica per via non soltanto della varietà delle risoluzioni ma anche degli oggetti che posizionerai sulla form.
Una tecnica che utilizzo da anni è quella proporzionale.
In pratica, (assumendo la form pari allo schermo) data 100 x 100 la risoluzione del dispositivo corrente, ogni elemento sarà grande a% x b% rispetto ai 100; mentre la sua posizione sarà c%,d% sempre rispetto ai 100.
Avrai un riferimento 0,0 di partenza e scriverai una funzione che posizionerà tutti gli oggetti sullo schermo ricavando i valori assoluti calcolati sulla proporzione col dispositivo corrente.
Un tantino noioso da fare la prima volta ma poi la soddisfazione di vedere magicamente ogni cosa che si autoposiziona come un grande supporto elastico ti darà la giusta carica per proseguire.
Auguri. :sign0098:
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
grazie teknomatica, ho seguito il tuo consiglio ma sopratutto ho avuto un grande aiuto dall'amico filippo via skype, credo che ho capito come fare :) grazie. sto lavorando con le percentuali dello schermo e mi sto trovando bene.
 

anallie0

Active Member
Licensed User
Longtime User
potresti postare come fare per noi giovani programmatori cinquantenni... :)
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
vi faccio vedere un esempio di codice:
B4X:
Sub Activity_Create(FirstTime As Boolean)

   p.SetScreenOrientation(1)
   
    Activity.LoadLayout("torcia")
    camera1.Initialize(panel1, "camera1")

   img1.SetLayout(0%x,0%y,100%x,20%y)
   btnAccendi.SetLayout(35%x,25%y,25%x,15%y)
   btnStop.SetLayout(35%x,43%y,25%x,15%y)
   btnStrobo.SetLayout(30%x,60%y,35%x,15%y)
   sp1.SetLayout(30%x,82%y,35%x,15%y)
   Label1.SetLayout(23%x,72%y,50%x,15%y)

   sp1.Add("10 Ms")
   sp1.Add("30 Ms")
   sp1.Add("50 Ms")
   sp1.Add("80 Ms")
   sp1.Add("100 Ms")
   sp1.Add("130 Ms")
   sp1.Add("150 Ms")
   sp1.Add("180 Ms")
   sp1.Add("200 Ms")
   sp1.Add("230 Ms")
   sp1.Add("250 Ms")
   sp1.Add("280 Ms")
   sp1.Add("300 Ms")
   sp1.Add("330 Ms")
   sp1.Add("350 Ms")
   sp1.Add("380 Ms")
   sp1.Add("400 Ms")
   sp1.Add("430 Ms")
   sp1.Add("450 Ms")
   sp1.Add("480 Ms")
   sp1.Add("500 Ms")
 End Sub
come potete vedere questo esempio vi permette di far funzionare la vostra applicazione su quasi tutti i dispositivi android.
 

Attachments

  • torcia.jpg
    torcia.jpg
    10.2 KB · Views: 369

fifiddu70

Well-Known Member
Licensed User
Longtime User
per intenderci il pezzo di codice in questione è questo:

B4X:
        img1.SetLayout(0%x,0%y,100%x,20%y)
   btnAccendi.SetLayout(35%x,25%y,25%x,15%y)
   btnStop.SetLayout(35%x,43%y,25%x,15%y)
   btnStrobo.SetLayout(30%x,60%y,35%x,15%y)
   sp1.SetLayout(30%x,82%y,35%x,15%y)
   Label1.SetLayout(23%x,72%y,50%x,15%y)

come vedete dalla foto postata in precedenza, 1mg1 sarebbe l'immagine che si trova sopra in alto l'applicazione.
se esaminiamo questa riga: img1.SetLayout(0%x,0%y,100%x,20%y)
abbiamo: 0%x sarebbe la posizione iniziale orizzontale di img1
0%y sarebbe la posizione iniziale verticale di img1
100%x sarebbero le dimensioni orizzontali di img1 se al posto di 100%x avreste inserito ad esempio 90%x, la dimensione di img1 sarebbe ridotta in orizzontale di ben 10% in meno avendo così 10% di spazio sulla destra dell'immagine.
mentre per 30%y si intende la dimensione in verticale di img1
quindi i primi due x ed y sono le posizioni in percentuale dello schermo
mentre a seguire: x ed y sono le dimensioni rispettivamente per x = orizzontale ed y = verticale.
spero di essere stato chiaro.
 

lorenzo1975

Member
Licensed User
Longtime User
Ciao fifiddu70
Scusa se ti chiedo il chiarimento,ma in pratica tu disegni l'interfaccia
con il Desainer e poi ridefinisci la posizione dei controlli con il codice
oppure definisci tutto il layout con il codice.
Grazie per il chiarimento!:)
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
non uso il desiner per visualizzare gli oggetti, creo ad esempio un pulsante, poi gli definisco dove deve andare e le varie misure e il risultato lo visualizzo sul telefonino.
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciao a tutti
In questo momento per la mia app sto utilizzando una soluzione diversa.
Dovendo girare eslusivamente sui Tablet , ed avendo un bel po' di oggetti ,sto utilizzando pannelli diversi che apro in base alla risoluzione
Premetto che le soluzioni saranno poi alla fine solo tre (800*480 1024*600 >1024 ) anche se attualmente sto sviluppando per la 1024.
Questo mi permettera' poi di poterlo fare multilingua semplicemente avendo un pannello diverso.
So che e' una soluzione un po ortodossa ma per ora ho scelto questa. Magari poi mi studio bene il video fatto fifiddu su youtube
Ciaooo
Mamo
 

lorenzo1975

Member
Licensed User
Longtime User
Ciao a tutti!
Vorrei provare a realizzare una routine che
ridimensioni automaticamente tutti i controlli,
Qualcuno sa se esiste una propieta che restituisce
Il nome o l'indice di tutti i controlli del layout di una
activity?
 
Top