Italian Layout applicazione

Fulvio75

Well-Known Member
Licensed User
Ciao, ho bisogno una info di come impostare il layout delle applicazioni:
uso le varianti del layout per impostare le posizioni dei controlli per due dispositivi differenti senza utilizzare il layout generale e commentando autoscaleall.
Collegando il dispositivo 1 sotto mi compare 1080x1920 scale 3 e la variante la imposto con queste dimensioni.
Collego il dispositivo 2 faccio la stessa cosa.
Il problema nasce sul dispositivo 2 che non imposta le posizioni dei controlli e le visualizza in disordine come le posiziono nel designer pur avendo postato tutte le posizioni e grandezze dallo script.
Lo script come viene scelto dal dispositivo su qui installo l'applicazione?
Pur avendo le stesse dimensioni non viene selezionato e utilizza lo script generale ovviamente vuoto perché come detto uso la variante, il dubbio è che non imposto le dimensioni esatte nel designer e non trova lo script quindi usa il generale, come trovo le dimensioni giuste?
 

Alessandro71

Well-Known Member
Licensed User
Longtime User
Considerato che stai partendo da zero, e che le varianti sono sconsigliate in quanto difficili da gestire (come hai visto), parti con:
 

Fulvio75

Well-Known Member
Licensed User
Considerato che stai partendo da zero, e che le varianti sono sconsigliate in quanto difficili da gestire (come hai visto), parti con:
Ok guardo grazie
 

Aldo's

Active Member
Licensed User
Considerato che stai partendo da zero, e che le varianti sono sconsigliate in quanto difficili da gestire (come hai visto), parti con:
Belin, questa cosa apre un mondo nuovo!
Stupenda
 

BlueVision

Active Member
Licensed User
Longtime User
Ciò che mi interessa del vostro problema è quale problema avete effettivamente. Si tratta del formato del display?
La prego di spiegare un po' di più. Il formato dei due dispositivi è così diverso? Certo, a volte è molto difficile trovare un certo equilibrio tra le diverse dimensioni del display. Tuttavia, secondo la mia esperienza, le varianti sono davvero l'ultima opzione da utilizzare. Sono sicuro che lo sapete anche voi.
Si tratta in genere del formato del display (in passato si usava un formato 4:3, poi si è passati da 16:9 a 2:1, che oggi è più comune, i display stanno semplicemente diventando più "lunghi"). È questo il vero problema?
 

LucaMs

Expert
Licensed User
Longtime User
Ciò che mi interessa del vostro problema è quale problema avete effettivamente. Si tratta del formato del display?
La prego di spiegare un po' di più. Il formato dei due dispositivi è così diverso? Certo, a volte è molto difficile trovare un certo equilibrio tra le diverse dimensioni del display. Tuttavia, secondo la mia esperienza, le varianti sono davvero l'ultima opzione da utilizzare. Sono sicuro che lo sapete anche voi.
Si tratta in genere del formato del display (in passato si usava un formato 4:3, poi si è passati da 16:9 a 2:1, che oggi è più comune, i display stanno semplicemente diventando più "lunghi"). È questo il vero problema?
Già, il problema è sempre e solo quello: la capoccia testarda dei produttori che anziché standardizzare il "formato" (ratio) dei display, come è per i TV, continuano a farli come gli gira!

Una cosa che mi rode da anni! Una cretinata inutile!
 

BlueVision

Active Member
Licensed User
Longtime User
Il problema è quindi il rapporto. È esattamente il problema che avevo con la mia applicazione Compass. In origine era programmata per 4:3 e sembrava perfetta. Poi è arrivato il 16:9 e la rosa dei venti si è trasformata in un leggero ovale. È stato comunque relativamente facile compensare il problema. Ma i dispositivi sono diventati sempre più lunghi e con un rapporto di quasi 2:1, un cerchio non sembra più un cerchio.
Poiché ero troppo pigro per risolvere il problema con le varianti (il dilemma è semplicemente che si è costantemente alla ricerca della tecnologia dei nuovi dispositivi), ho affrontato il problema in modo corretto:
Il rapporto può essere determinato e utilizzato come variabile nello script del designer. L'altezza della rosa dei venti si basa principalmente sulla larghezza del display, mentre l'altezza viene calcolata in base al rapporto. E l'ovale è tornato a essere un cerchio. Lo svantaggio di questo metodo è che più il display diventa lungo, più la rosa dei venti diventa naturalmente piccola sul display...
Ma è possibile gestirlo.

Le dimensioni di altri elementi di design possono essere calcolate in modo simile. Per non renderli inutilmente lunghi (a seconda dell'altezza del display), è possibile aumentare gli spazi tra i singoli elementi del disegno. Questo metodo funziona abbastanza bene se si prova un po'. In ogni caso, è meglio che utilizzare diverse varianti di design. Il prossimo display ancora più grande è garantito...

Ecco come ci sono riuscito. È complicato, ma funziona.
L'adattamento del codice di progettazione dall'interno del programma apre possibilità di manipolazione inimmaginabili, ma rende anche il tutto piuttosto confuso.

Vi prego di capire questo senza giudicare. In definitiva, ogni programmatore sa da solo quale metodo gli è più congeniale. Vedo alcune incertezze quando si controlla il codice di progettazione dall'applicazione, che poi si ripercuote sugli aggiornamenti successivi dell'applicazione. In questo modo, so sempre dove guardare se qualcosa non va bene...
Con gli ancoraggi e uno script intelligente basato sulle percentuali, di solito si riesce a gestire abbastanza bene la situazione...
 

LucaMs

Expert
Licensed User
Longtime User
. In origine era programmata per 4:3 e sembrava perfetta. Poi è arrivato il 16:9 e la rosa dei venti si è trasformata in un leggero ovale. È stato comunque relativamente facile compensare il problema. Ma i dispositivi sono diventati sempre più lunghi e con un rapporto di quasi 2:1, un cerchio non sembra più un cerchio.
Magari (si fa per dire) fosse così. I rapporti sono sempre stati diversi, a seconda delle DEMENZIALI scelte dei produttori.
Voglio dire che non è che all'inizio tutti fossero 4:3, poi tutti 16:9, ... ma da sempre ce ne sono molti.

La "soluzione" (pessima ma necessaria) è un po' come quella dei programmi TV registrati in 4:3 e visualizzati sui TV che, TUTTI, maremma d'una maremma, hanno rapporto 16:9, ovvero lasciare spazi intorno, non tentare di occupare l'intero display.

I variant. Secondo me generalmente se ne dovrebbero creare solo due: uno per il portrait, uno per il landscape.
Altra cosa che si dovrebbe fare (e siamo troppo pigri, purtroppo) è creare layout diversi per smartphone e tablet, mentre per faticare meno usiamo lo stesso, che sul tablet sarà solo più grande, invece dovrebbe visualizzare cose "diverse". Voglio dire che magari su smartphone si avrà una griglia dati ed un tasto che apra un elenco di opzioni (altra schermata o sovrapposto), mentre su tablet si avrebbero le due cose affiancate.
 

BlueVision

Active Member
Licensed User
Longtime User
Esempi?
Beh, non è certo la pietra filosofale. Ma va esattamente nella direzione descritta da Luca.
Vi allego alcuni screenshot che ho appena scattato. Sì, non sono gli ultimi dispositivi, ma li ordinerò da "quadrato" a "bricchetto"...

Riuscite a notare le differenze?
Il tutto con un solo script. Naturalmente, anche questo ha i suoi limiti. Ricordo che non era così facile e che ho anche cambiato la mia "formula" a seconda del rapporto: L'intervallo del rapporto determina uno dei 3 fattori di forma. Questo fattore di forma viene utilizzato nel calcolo dinamico del layout.
Questo è forse meglio visibile intorno all'arco inferiore della rosa dei venti. Sull'HTC One M7, si trova in basso tra i pulsanti. Sullo XIAOMI MI 10T, si trova molto al di sopra dei pulsanti. Anche il bordo superiore della rosa dei venti si sposta.
Ed è proprio questa l'assurdità di questi telefoni cellulari sempre più lunghi. La larghezza non cambia. Quindi il diametro della rosa dei venti rimane quasi sempre costante, anche se si dispone di un display di grandi dimensioni. Un cerchio è solo un cerchio...
A proposito, la strana "biglia" a ovest non è un errore dell'immagine, ma la posizione della luna e la sua fase. Sono davvero orgoglioso dell'algoritmo. Trigonometria sferica, non iniziate mai con essa, impazzirete...

HTC One M7.jpgMI A2.jpgSamsung A40.jpgMI 10T.jpg

HTC One M7 / XIAOMI MI A2 / SAMSUNG A40 / XIAOMI MI 10T
 

LucaMs

Expert
Licensed User
Longtime User
Bella grafica!!!

Appunto, nel tuo caso hai un po' più di spazio vuota tra la "rosa" ed i tasti, quindi in verticale, come si hanno le barre nere ai lati di un programma TV 4:3 sui TV, in orizzontale solo perché... non tutti mettiamo il TV in verticale ? :(


Trigonometria sferica, non iniziate mai con essa, impazzirete...
Ma non ci penso proprio, era già faticosa la trigonometria "2D" ! ?
 

BlueVision

Active Member
Licensed User
Longtime User
non tutti mettiamo il TV in verticale
Un punto dolente per me. Mi ribolle il sangue quando vedo questi video "eleganti" in TV. A seconda del contenuto, quando si gira una clip si dovrebbe tenere il cellulare in modalità orizzontale e non sempre in modalità verticale. In questo modo si esegue un panning avanti e indietro selvaggio per catturare in qualche modo la scena, con contenuti per lo più irrilevanti nella metà superiore e inferiore dell'immagine. Inoltre, ci sono queste meravigliose immagini doppie sfocate sul televisore, in modo che lo schermo televisivo non debba diventare nero. Poi vedo ciò che è effettivamente importante sull'enorme schermo piatto in un'area che potrebbe essere facilmente coperta da un francobollo.
Beh, non tutte le inquadrature sono pianificate, ma molti video di questi nuovi grandi guadagni, noti come influencer, sono semplicemente i migliori esempi di ignoranza in questo campo. La composizione dell'immagine, la sezione aurea e la scelta dei colori sono spesso un disastro.
Sì, sono diventato un vecchio che non capisce più il mondo e sto di nuovo divagando dall'argomento...

Grazie mille per gli apprezzamenti Luca.
 

BlueVision

Active Member
Licensed User
Longtime User
Per tutti coloro che sono interessati, ecco lo script dell'applicazione. Siete invitati a scaricare la vostra copia del programma, poiché è già un po' datata. Non posso dire se funziona anche sulle versioni ANDROID più recenti. GOOGLE mi ha fatto perdere interesse per ANDROID e mi sto concentrando maggiormente su B4J.

Cliccate qui per la presentazione dell'app nel TOPIC "Condividi le tue creazioni". Il programma è gratuito per tutti i membri del forum. Forse a qualcuno di voi piacerà. Ho cercato di integrare quasi tutto ciò che è possibile, quindi le funzioni sono molto complesse e non immediatamente chiare a prima vista. Dopo un breve periodo di familiarizzazione, la logica alla base del concetto diventa chiara. La documentazione dell'applicazione è integrata. Forse è anche un'idea per ridare vita a un vecchio cellulare, a patto che la batteria sia ancora utilizzabile e non si arrenda subito. Le complesse funzioni di calcolo sono un po' impegnative per il processore e questo succhia un po' di capacità della batteria...

Designer Script:
'All variants script
AutoScaleAll
PFront.SetTopAndBottom(0%y,100%y)
PFront.SetLeftAndRight(0%x,100%x)
PBack.SetTopAndBottom(0%y,100%y)
PBack.SetLeftAndRight(0%x,100%x)
PRose.Width = 30%x
PRose.HorizontalCenter = 50%x
PRose.Height = PRose.Width
PRose.VerticalCenter = 50%y
PArrowBlue.Width =30%x
PArrowBlue.HorizontalCenter = 50%x
PArrowBlue.Height = PArrowBlue.Width
PArrowBlue.VerticalCenter = 50%y
PSun.Width =30%x
PSun.HorizontalCenter = 50%x
PSun.Height = PArrowBlue.Width
PSun.VerticalCenter = 50%y
PMoon.HorizontalCenter = 50%x
PMoon.Height = PArrowBlue.Width
PMoon.VerticalCenter = 50%y
PMoonTurn.Top = PMoon.Width/2 - 70.5*(PMoon.Width/2)/100
PMoonTurn.Width = PMoon.Left+3.5*PMoon.Width/100
PMoonTurn.Height = PMoonTurn.Width
PMoonTurn.Left = PMoon.Width/2-PMoonTurn.Width/2
BInfo.SetTopAndBottom(49%y,55%y)
BInfo.SetLeftAndRight(3%x,22%x)
LDeclination.SetTopAndBottom(49%y,55%y)
LDeclination.SetLeftAndRight(78%x,97%x)
LDeclinationLabel.SetTopAndBottom(LDeclination.Top,LDeclination.Bottom-4%y)
LDeclinationLabel.SetLeftAndRight(LDeclination.Left+2%x,LDeclination.Left+18%x)
ImageViewDecli0.SetTopAndBottom(LDeclination.Top+2.5%y,LDeclination.Bottom-0.5%y)
ImageViewDecli0.SetLeftAndRight(LDeclination.Left+3%x,LDeclination.Left+6%x)
ImageViewDecli1.SetTopAndBottom(ImageViewDecli0.Top,ImageViewDecli0.Bottom)
ImageViewDecli1.SetLeftAndRight(ImageViewDecli0.Left+3%x,ImageViewDecli0.Right+3%x)
ImageViewDecli2.SetTopAndBottom(ImageViewDecli1.Top,ImageViewDecli1.Bottom)
ImageViewDecli2.SetLeftAndRight(ImageViewDecli1.Left+3%x,ImageViewDecli1.Right+3%x)
ImageViewDecliDot.SetTopAndBottom(ImageViewDecli2.Top,ImageViewDecli2.Bottom)
ImageViewDecliDot.SetLeftAndRight(ImageViewDecli2.Left+3%x,ImageViewDecli2.Right+1.5%x)
ImageViewDecli3.SetTopAndBottom(ImageViewDecliDot.Top,ImageViewDecliDot.Bottom)
ImageViewDecli3.SetLeftAndRight(ImageViewDecliDot.Left+1.5%x,ImageViewDecliDot.Right+3%x)
LSats.SetTopAndBottom(58%y,64%y)
LSats.SetLeftAndRight(3%x,22%x)
LSatLabel.SetTopAndBottom(LSats.Top,LSats.Bottom-4%y)
LSatLabel.SetLeftAndRight(LSats.Left+2%x,LSats.Left+10%x)
ImageViewSat0.SetTopAndBottom(LSats.Top+2.5%y,LSats.Bottom-0.5%y)
ImageViewSat0.SetLeftAndRight(LSats.Left+6%x,LSats.Right-10%x)
ImageViewSat1.SetTopAndBottom(ImageViewSat0.Top,ImageViewSat0.Bottom)
ImageViewSat1.SetLeftAndRight(ImageViewSat0.Left+3%x,ImageViewSat0.Right+3%x)
LAccuracy.SetTopAndBottom(58%y,64%y)
LAccuracy.Left = LSats.Left + 25%x
LAccuracy.Width = LSats.Width
LAccLabel.SetTopAndBottom(LAccuracy.Top,LAccuracy.Bottom-4%y)
LAccLabel.SetLeftAndRight(LAccuracy.Left+2%x,LAccuracy.Left+9%x)
LAccMeas.SetTopAndBottom(LAccLabel.Top,LAccLabel.Bottom)
LAccMeas.SetLeftAndRight(LAccLabel.Right,LAccLabel.Right+3%x)
ImageViewAcc0.SetTopAndBottom(LAccuracy.Top+2.5%y,LAccuracy.Bottom-0.5%y)
ImageViewAcc0.SetLeftAndRight(LAccuracy.Left+3%x,LAccuracy.Left+6%x)
ImageViewAcc1.SetTopAndBottom(ImageViewAcc0.Top,ImageViewAcc0.Bottom)
ImageViewAcc1.SetLeftAndRight(ImageViewAcc0.Left+3%x,ImageViewAcc0.Right+3%x)
ImageViewAcc2.SetTopAndBottom(ImageViewAcc1.Top,ImageViewAcc1.Bottom)
ImageViewAcc2.SetLeftAndRight(ImageViewAcc1.Left+3%x,ImageViewAcc1.Right+3%x)
ImageViewAccDot.SetTopAndBottom(ImageViewAcc2.Top,ImageViewAcc2.Bottom)
ImageViewAccDot.SetLeftAndRight(ImageViewAcc2.Left+3%x,ImageViewAcc2.Right+1.5%x)
ImageViewAcc3.SetTopAndBottom(ImageViewAccDot.Top,ImageViewAccDot.Bottom)
ImageViewAcc3.SetLeftAndRight(ImageViewAccDot.Left+1.5%x,ImageViewAccDot.Right+3%x)
LAltitude.SetTopAndBottom(58%y,64%y)
LAltitude.Left = LAccuracy.Left + 25%x
LAltitude.Width = LAccuracy.Width
LAltLabel.SetTopAndBottom(LAltitude.Top,LAltitude.Bottom-4%y)
LAltLabel.SetLeftAndRight(LAltitude.Left+2%x,LAltitude.Left+9%x)
LAltMeas.SetTopAndBottom(LAltLabel.Top,LAltLabel.Bottom)
LAltMeas.SetLeftAndRight(LAltLabel.Right,LAltLabel.Right+3%x)
ImageViewAlt0.SetTopAndBottom(LAltitude.Top+2.5%y,LAltitude.Bottom-0.5%y)
ImageViewAlt0.SetLeftAndRight(LAltitude.Left+2%x,LAltitude.Left+5%x)
ImageViewAlt1.SetTopAndBottom(ImageViewAlt0.Top,ImageViewAlt0.Bottom)
ImageViewAlt1.SetLeftAndRight(ImageViewAlt0.Left+3%x,ImageViewAlt0.Right+3%x)
ImageViewAlt2.SetTopAndBottom(ImageViewAlt1.Top,ImageViewAlt1.Bottom)
ImageViewAlt2.SetLeftAndRight(ImageViewAlt1.Left+3%x,ImageViewAlt1.Right+3%x)
ImageViewAlt3.SetTopAndBottom(ImageViewAlt2.Top,ImageViewAlt2.Bottom)
ImageViewAlt3.SetLeftAndRight(ImageViewAlt2.Left+3%x,ImageViewAlt2.Right+3%x)
ImageViewAlt4.SetTopAndBottom(ImageViewAlt3.Top,ImageViewAlt3.Bottom)
ImageViewAlt4.SetLeftAndRight(ImageViewAlt3.Left+3%x,ImageViewAlt3.Right+3%x)
ImageViewDotAlt.SetTopAndBottom(LAltLabel.Top,LAltLabel.Bottom)
ImageViewDotAlt.SetLeftAndRight(LAltLabel.Left+13%x,LAltLabel.Left+16%x)
LBearing.SetTopAndBottom(58%y,64%y)
LBearing.Left = LAltitude.Left + 25%x
LBearing.Width = LAltitude.Width
LBearLabel.SetTopAndBottom(LBearing.Top,LBearing.Bottom-4%y)
LBearLabel.SetLeftAndRight(LBearing.Left+2%x,LBearing.Left+18%x)
ImageViewBear0.SetTopAndBottom(LBearing.Top+2.5%y,LBearing.Bottom-0.5%y)
ImageViewBear0.SetLeftAndRight(LBearing.Left+3%x,LBearing.Left+6%x)
ImageViewBear1.SetTopAndBottom(ImageViewBear0.Top,ImageViewBear0.Bottom)
ImageViewBear1.SetLeftAndRight(ImageViewBear0.Left+3%x,ImageViewBear0.Right+3%x)
ImageViewBear2.SetTopAndBottom(ImageViewBear1.Top,ImageViewBear1.Bottom)
ImageViewBear2.SetLeftAndRight(ImageViewBear1.Left+3%x,ImageViewBear1.Right+3%x)
ImageViewBearDot.SetTopAndBottom(ImageViewBear2.Top,ImageViewBear2.Bottom)
ImageViewBearDot.SetLeftAndRight(ImageViewBear2.Left+3%x,ImageViewBear2.Right+1.5%x)
ImageViewBear3.SetTopAndBottom(ImageViewBearDot.Top,ImageViewBearDot.Bottom)
ImageViewBear3.SetLeftAndRight(ImageViewBearDot.Left+1.5%x,ImageViewBearDot.Right+3%x)
ImageViewDotBear.SetTopAndBottom(LBearLabel.Top,LBearLabel.Bottom)
ImageViewDotBear.SetLeftAndRight(LBearLabel.Left+13%x,LBearLabel.Left+16%x)
LLon.SetTopAndBottom(67%y,73%y)
LLon.SetLeftAndRight(3%x,48%x)
LLonGPS.SetTopAndBottom(67%y,73%y)
LLonGPS.SetLeftAndRight(3%x,48%x)
LLonLabel.SetTopAndBottom(LLon.Top,LLon.Bottom-4%y)
LLonLabel.SetLeftAndRight(LLon.Left+2%x,LLon.Left+18%x)
ImageViewLonHR.SetTopAndBottom(LLon.Top+2%y,LLon.Bottom-0.5%y)
ImageViewLonHR.SetLeftAndRight(LLon.Left+1%x,LLon.Left+5%x)
ImageViewLonDeg0.SetTopAndBottom(ImageViewLonHR.Top,ImageViewLonHR.Bottom)
ImageViewLonDeg0.SetLeftAndRight(ImageViewLonHR.Right,ImageViewLonHR.Right+4%x)
ImageViewLonDeg1.SetTopAndBottom(ImageViewLonDeg0.Top,ImageViewLonDeg0.Bottom)
ImageViewLonDeg1.SetLeftAndRight(ImageViewLonDeg0.Right,ImageViewLonDeg0.Right+4%x)
ImageViewLonDeg2.SetTopAndBottom(ImageViewLonDeg1.Top,ImageViewLonDeg1.Bottom)
ImageViewLonDeg2.SetLeftAndRight(ImageViewLonDeg1.Right,ImageViewLonDeg1.Right+4%x)
ImageViewLonDeg.SetTopAndBottom(ImageViewLonDeg2.Top,ImageViewLonDeg2.Bottom)
ImageViewLonDeg.SetLeftAndRight(ImageViewLonDeg2.Right,ImageViewLonDeg2.Right+2%x)
ImageViewLonMin0.SetTopAndBottom(ImageViewLonDeg.Top,ImageViewLonDeg.Bottom)
ImageViewLonMin0.SetLeftAndRight(ImageViewLonDeg.Right,ImageViewLonDeg.Right+4%x)
ImageViewLonMin1.SetTopAndBottom(ImageViewLonMin0.Top,ImageViewLonMin0.Bottom)
ImageViewLonMin1.SetLeftAndRight(ImageViewLonMin0.Right,ImageViewLonMin0.Right+4%x)
ImageViewLonMin.SetTopAndBottom(ImageViewLonMin1.Top,ImageViewLonMin1.Bottom)
ImageViewLonMin.SetLeftAndRight(ImageViewLonMin1.Right,ImageViewLonMin1.Right+2%x)
ImageViewLonSec0.SetTopAndBottom(ImageViewLonMin.Top,ImageViewLonMin.Bottom)
ImageViewLonSec0.SetLeftAndRight(ImageViewLonMin.Right,ImageViewLonMin.Right+4%x)
ImageViewLonSec1.SetTopAndBottom(ImageViewLonSec0.Top,ImageViewLonSec0.Bottom)
ImageViewLonSec1.SetLeftAndRight(ImageViewLonSec0.Right,ImageViewLonSec0.Right+4%x)
ImageViewLonDot.SetTopAndBottom(ImageViewLonSec1.Top,ImageViewLonSec1.Bottom)
ImageViewLonDot.SetLeftAndRight(ImageViewLonSec1.Right,ImageViewLonSec1.Right+2%x)
ImageViewLonSec2.SetTopAndBottom(ImageViewLonDot.Top,ImageViewLonDot.Bottom)
ImageViewLonSec2.SetLeftAndRight(ImageViewLonDot.Right,ImageViewLonDot.Right+4%x)
ImageViewLonSec.SetTopAndBottom(ImageViewLonSec2.Top,ImageViewLonSec2.Bottom)
ImageViewLonSec.SetLeftAndRight(ImageViewLonSec2.Right,ImageViewLonSec2.Right+2%x)
LLat.SetTopAndBottom (67%y,73%y)
LLat.SetLeftAndRight(52%x,97%x)
LLatGPS.SetTopAndBottom (67%y,73%y)
LLatGPS.SetLeftAndRight(52%x,97%x)
LLatLabel.SetTopAndBottom(LLat.Top,LLat.Bottom-4%y)
LLatLabel.SetLeftAndRight(LLat.Left+2%x,LLat.Left+18%x)
ImageViewLatHR.SetTopAndBottom(LLat.Top+2%y,LLat.Bottom-0.5%y)
ImageViewLatHR.SetLeftAndRight(LLat.Left+3%x,LLat.Left+7%x)
ImageViewLatDeg0.SetTopAndBottom(ImageViewLatHR.Top,ImageViewLatHR.Bottom)
ImageViewLatDeg0.SetLeftAndRight(ImageViewLatHR.Right,ImageViewLatHR.Right+4%x)
ImageViewLatDeg1.SetTopAndBottom(ImageViewLatDeg0.Top,ImageViewLatDeg0.Bottom)
ImageViewLatDeg1.SetLeftAndRight(ImageViewLatDeg0.Right,ImageViewLatDeg0.Right+4%x)
ImageViewLatDeg.SetTopAndBottom(ImageViewLatDeg1.Top,ImageViewLatDeg1.Bottom)
ImageViewLatDeg.SetLeftAndRight(ImageViewLatDeg1.Right,ImageViewLatDeg1.Right+2%x)
ImageViewLatMin0.SetTopAndBottom(ImageViewLatDeg.Top,ImageViewLatDeg.Bottom)
ImageViewLatMin0.SetLeftAndRight(ImageViewLatDeg.Right,ImageViewLatDeg.Right+4%x)
ImageViewLatMin1.SetTopAndBottom(ImageViewLatMin0.Top,ImageViewLatMin0.Bottom)
ImageViewLatMin1.SetLeftAndRight(ImageViewLatMin0.Right,ImageViewLatMin0.Right+4%x)
ImageViewLatMin.SetTopAndBottom(ImageViewLatMin1.Top,ImageViewLatMin1.Bottom)
ImageViewLatMin.SetLeftAndRight(ImageViewLatMin1.Right,ImageViewLatMin1.Right+2%x)
ImageViewLatSec0.SetTopAndBottom(ImageViewLatMin.Top,ImageViewLatMin.Bottom)
ImageViewLatSec0.SetLeftAndRight(ImageViewLatMin.Right,ImageViewLatMin.Right+4%x)
ImageViewLatSec1.SetTopAndBottom(ImageViewLatSec0.Top,ImageViewLatSec0.Bottom)
ImageViewLatSec1.SetLeftAndRight(ImageViewLatSec0.Right,ImageViewLatSec0.Right+4%x)
ImageViewLatDot.SetTopAndBottom(ImageViewLatSec1.Top,ImageViewLatSec1.Bottom)
ImageViewLatDot.SetLeftAndRight(ImageViewLatSec1.Right,ImageViewLatSec1.Right+2%x)
ImageViewLatSec2.SetTopAndBottom(ImageViewLatDot.Top,ImageViewLatDot.Bottom)
ImageViewLatSec2.SetLeftAndRight(ImageViewLatDot.Right,ImageViewLatDot.Right+4%x)
ImageViewLatSec.SetTopAndBottom(ImageViewLatSec2.Top,ImageViewLatSec2.Bottom)
ImageViewLatSec.SetLeftAndRight(ImageViewLatSec2.Right,ImageViewLatSec2.Right+2%x)
LSpeed.SetTopAndBottom (76%y,84%y)
LSpeed.SetLeftAndRight(3%x,48%x)
LSpeedLabel.SetTopAndBottom(LSpeed.Top,LSpeed.Top+2%y)
LSpeedLabel.SetLeftAndRight(LSpeed.Left+2%x,LSpeed.Left+18%x)
LSpeedMeas.SetTopAndBottom(LSpeedLabel.Top,LSpeedLabel.Bottom)
LSpeedMeas.SetLeftAndRight(LSpeedLabel.Right+2%x,LSpeedLabel.Right+8%x)
ImageViewSpeed0.SetTopAndBottom(LSpeed.Top+2%y,LSpeed.Bottom-1%y)
ImageViewSpeed0.SetLeftAndRight(LSpeed.Left+9%x,LSpeed.Left+14%x)
ImageViewSpeed1.SetTopAndBottom(ImageViewSpeed0.Top,ImageViewSpeed0.Bottom)
ImageViewSpeed1.SetLeftAndRight(ImageViewSpeed0.Right,ImageViewSpeed0.Right+5%x)
ImageViewSpeed2.SetTopAndBottom(ImageViewSpeed1.Top,ImageViewSpeed1.Bottom)
ImageViewSpeed2.SetLeftAndRight(ImageViewSpeed1.Right,ImageViewSpeed1.Right+5%x)
ImageViewSpeed3.SetTopAndBottom(ImageViewSpeed2.Top,ImageViewSpeed2.Bottom)
ImageViewSpeed3.SetLeftAndRight(ImageViewSpeed2.Right,ImageViewSpeed2.Right+5%x)
ImageViewSpeedDot.SetTopAndBottom(ImageViewSpeed3.Top,ImageViewSpeed3.Bottom)
ImageViewSpeedDot.SetLeftAndRight(ImageViewSpeed3.Right,ImageViewSpeed3.Right+3%x)
ImageViewSpeed4.SetTopAndBottom(ImageViewSpeedDot.Top,ImageViewSpeedDot.Bottom)
ImageViewSpeed4.SetLeftAndRight(ImageViewSpeedDot.Right,ImageViewSpeedDot.Right+5%x)
LODO.SetTopAndBottom (76%y,84%y)
LODO.SetLeftAndRight(52%x,97%x)
LTrip.SetTopAndBottom (76%y,84%y)
LTrip.SetLeftAndRight(52%x,75%x)
LODOLabel.SetTopAndBottom(LODO.Top,LODO.Top+2%y)
LODOLabel.SetLeftAndRight(LODO.Left+2%x,LODO.Left+18%x)
LODOMeas.SetTopAndBottom(LODOLabel.Top,LODOLabel.Bottom)
LODOMeas.SetLeftAndRight(LODOLabel.Right+2%x,LODOLabel.Right+24%x)
ImageViewTrip0.SetTopAndBottom(LODO.Top+2%y,LODO.Bottom-1%y)
ImageViewTrip0.SetLeftAndRight(LODO.Left+0.5%x,LODO.Left+4.5%x)
ImageViewTrip1.SetTopAndBottom(ImageViewTrip0.Top,ImageViewTrip0.Bottom)
ImageViewTrip1.SetLeftAndRight(ImageViewTrip0.Right,ImageViewTrip0.Right+4%x)
ImageViewTrip2.SetTopAndBottom(ImageViewTrip1.Top,ImageViewTrip1.Bottom)
ImageViewTrip2.SetLeftAndRight(ImageViewTrip1.Right,ImageViewTrip1.Right+4%x)
ImageViewTrip3.SetTopAndBottom(ImageViewTrip2.Top,ImageViewTrip2.Bottom)
ImageViewTrip3.SetLeftAndRight(ImageViewTrip2.Right,ImageViewTrip2.Right+4%x)
ImageViewTripDot.SetTopAndBottom(ImageViewTrip3.Top,ImageViewTrip3.Bottom)
ImageViewTripDot.SetLeftAndRight(ImageViewTrip3.Right,ImageViewTrip3.Right+1.5%x)
ImageViewTrip4.SetTopAndBottom(ImageViewTripDot.Top,ImageViewTripDot.Bottom)
ImageViewTrip4.SetLeftAndRight(ImageViewTripDot.Right,ImageViewTripDot.Right+4%x)
ImageViewODO0.SetTopAndBottom(ImageViewTrip0.Top,ImageViewTrip0.Bottom)
ImageViewODO0.SetLeftAndRight(ImageViewTrip4.Right+1.5%x,ImageViewTrip4.Right+5.5%x)
ImageViewODO1.SetTopAndBottom(ImageViewODO0.Top,ImageViewODO0.Bottom)
ImageViewODO1.SetLeftAndRight(ImageViewODO0.Right,ImageViewODO0.Right+4%x)
ImageViewODO2.SetTopAndBottom(ImageViewODO1.Top,ImageViewODO1.Bottom)
ImageViewODO2.SetLeftAndRight(ImageViewODO1.Right,ImageViewODO1.Right+4%x)
ImageViewODO3.SetTopAndBottom(ImageViewODO2.Top,ImageViewODO2.Bottom)
ImageViewODO3.SetLeftAndRight(ImageViewODO2.Right,ImageViewODO2.Right+4%x)
ImageViewODODot.SetTopAndBottom(ImageViewODO3.Top,ImageViewODO3.Bottom)
ImageViewODODot.SetLeftAndRight(ImageViewODO3.Right,ImageViewODO3.Right+1.5%x)
ImageViewODO4.SetTopAndBottom(ImageViewODODot.Top,ImageViewODODot.Bottom)
ImageViewODO4.SetLeftAndRight(ImageViewODODot.Right,ImageViewODODot.Right+4%x)
BStart.SetTopAndBottom(87%y,97%y)
BStart.Left = LSats.Left
BStart.Width = LSats.Width
BMode.SetTopAndBottom(87%y,97%y)
BMode.Left = LAccuracy.Left
BMode.Width = LAccuracy.Width
BReset.SetTopAndBottom (87%y,97%y)
BReset.Left = LAltitude.Left
BReset.Width = LAltitude.Width
BExit.SetTopAndBottom (87%y,97%y)
BExit.Left = LBearing.Left
BExit.Width = LBearing.Width
ImageViewHelp.SetTopAndBottom(0%y,50%y)
ImageViewHelp.SetLeftAndRight(0%x,100%x)
WebViewHelp.SetTopAndBottom(50%y,100%y)
WebViewHelp.SetLeftAndRight(0%x,100%x)
BCloseView.SetTopAndBottom(1%y,7%y)
BCloseView.SetLeftAndRight(84%x,97%x)
BSwapView.SetTopAndBottom(BCloseView.Top+7%y,BCloseView.Bottom+7%y)
BSwapView.SetLeftAndRight(BCloseView.Left,BCloseView.Right)
BSkin.SetTopAndBottom(2%y,10%y)
BSkin.SetLeftAndRight(3%x,20%x)
LSkin.SetTopAndBottom(BSkin.Top+1%y,BSkin.Bottom-1%y)
LSkin.SetLeftAndRight(BSkin.Right+3%x, 97%x)
BFont.SetTopAndBottom(BSkin.Top+10%y,BSkin.Bottom+10%y)
BFont.SetLeftAndRight(BSkin.Left, BSkin.Right)
LFont.SetTopAndBottom(BFont.Top+1%y,BFont.Bottom-1%y)
LFont.SetLeftAndRight(LSkin.left, LSkin.Right)
BLock.SetTopAndBottom(BFont.Top+10%y,BFont.Bottom+10%y)
BLock.SetLeftAndRight(BFont.Left,BFont.Right)
LLock.SetTopAndBottom(BLock.Top+1%y,BLock.Bottom-1%y)
LLock.SetLeftAndRight(BLock.Right+3%x, 97%x)
BCompass.SetTopAndBottom(BLock.Top+10%y,BLock.Bottom+10%y)
BCompass.SetLeftAndRight(BLock.Left, BLock.Right)
LCompass.SetTopAndBottom(BCompass.Top+1%y,BCompass.Bottom-1%y)
LCompass.SetLeftAndRight(BCompass.Right+3%x,97%x)
BSunMoon.SetTopAndBottom(BCompass.Top+10%y,BCompass.Bottom+10%y)
BSunMoon.SetLeftAndRight(BCompass.Left, BCompass.Right)
LSunMoon.SetTopAndBottom(BSunMoon.Top-1%y,BSunMoon.Bottom-4%y)
LSunMoon.SetLeftAndRight(LCompass.Left, LCompass.Right)
BLocal.SetTopAndBottom(LSunMoon.Bottom,LSunMoon.Bottom+5%y)
BLocal.SetLeftAndRight(LSunMoon.Left,LSunMoon.Left+37%x)
BMapTimeZone.SetTopAndBottom(BLocal.Top,BLocal.Bottom)
BMapTimeZone.Left=BLocal.Right
BMapTimeZone.Width=BLocal.Width
BReserved1.SetTopAndBottom(BCompass.Top+10%y,BCompass.Bottom+10%y)
BReserved1.SetLeftAndRight(BCompass.Left, BCompass.Right)
BReserved2.SetTopAndBottom(BReserved1.Top+10%y,BReserved1.Bottom+10%y)
BReserved2.SetLeftAndRight(BReserved1.Left, BReserved1.Right)
BReturn.SetTopAndBottom(77%y,85%y)
BReturn.SetLeftAndRight(BReserved2.Left, BReserved2.Right)
LVersion.SetTopAndBottom(89%y,99%y)
LVersion.SetLeftAndRight(3%x,97%x)
ImageViewLogo.SetTopAndBottom(BReturn.Top+7%y, LVersion.Top+2%y)
ImageViewLogo.SetLeftAndRight(70%x,97%x)
WebViewMap.SetTopAndBottom(0%y,100%y)
WebViewMap.SetLeftAndRight(0%x,100%x)
WebViewDonate.SetTopAndBottom(0%y,100%y)
WebViewDonate.SetLeftAndRight(0%x,100%x)
BCloseMap.SetTopAndBottom(2%y,8%y)
BCloseMap.SetLeftAndRight(82%x,95%x)
 
Top