Italian Risoluzione Schermo Vari Smartphone

Pisinho

Active Member
Licensed User
Longtime User
Buongiorno,
non ricordo come calcolare e inserire nel designer la risoluzione e la scala per avere le misure esatte dello schermo dei cellulari in possesso in azienda. Ricordo ma posso sbagliarmi che non era proprio la misura delle specifiche del telefono... o sbaglio ? Grazie a tutti. Buona domenica.
 

LucaMs

Expert
Licensed User
Longtime User
B4X:
Sub GetRealSize As LayoutValues
    Dim lv As LayoutValues
    Dim p As Phone
    If p.SdkVersion >= 17 Then
        Dim ctxt As JavaObject
        ctxt.InitializeContext
        Dim display As JavaObject = ctxt.RunMethodJO("getSystemService", Array("window")).RunMethod("getDefaultDisplay", Null)
        Dim point As JavaObject
        point.InitializeNewInstance("android.graphics.Point", Null)
        display.RunMethod("getRealSize", Array(point))
        lv.Width = point.GetField("x")
        lv.Height = point.GetField("y")
    Else
        lv.Width = 100%x
        lv.Height = 100%y
    End If
    lv.Scale = 100dip / 100
    Return lv
End Sub
 

LucaMs

Expert
Licensed User
Longtime User
Grazie LucaMs ma quando devo richiamare la GetRealSize ?
A quanto ho capito vuoi creare un'app specifica per un modello di smartphone, quindi vuoi solo sapere quale sia l'effettiva risoluzione per poi creare uno specifico variant, quindi quella routine dovresti lanciarla in un'app di test, chiamandola dall'Activity_Create.

In generale, comunque, non è il caso di fare in questo modo, meglio usare i variant di default.
 

Sagenut

Expert
Licensed User
Longtime User
Dipende per quale fine ti serve conoscere la reale dimensione dello schermo.
Se è per fare i Layout dovresti imparare ad usare gli Anchors e i dimensionamenti/posizionamenti tramite percentuali (o altro tipo di unità di misura come i DIP).
Se fai un buon lavoro i Layout si adatteranno automaticamente.
Come Variant io credo che il limite (già estremamente impegnativo) sia di farne 4, se proprio occorre:
Landscape per Cellulare
Portrait per Cellulare
Landscape per Tablet
Portrait per Tablet
Ovviamente non vanno fatti sempre tutti e 4.
Spesso potrebbero bastarti anche solo un buon Portrait e un buon Landscape che andranno bene ovunque.
E anche fare Portrait e Landscape solo se ha senso avere una differente distribuzione delle View nelle 2 versioni.
 

Pisinho

Active Member
Licensed User
Longtime User
Proprio ieri ho installato questa prima versione di ricerca dati da un DB SQLite. Sul mio che uso come test (Note9) tutto OK, su un S9 alcune scritte venivano mozzate, su un A50 mozzate ancora di più rispetto all'S9...
Nell'app c'è solo la variante 320x480 con opzione AutoScaleAll come predefinita...
Devo aggiungere qualcosa?
 

LucaMs

Expert
Licensed User
Longtime User

Sagenut

Expert
Licensed User
Longtime User
Puoi creare tu il Variant della misura che vuoi e rimuovere quelli che non ti servono.
 

Pisinho

Active Member
Licensed User
Longtime User
OK, stavo solo specificando il tipo di applicazione, lo so che il DB non c'entra niente con la grafica.
Ho visto il video di Erel, ho aggiunto la mia configurazione del telefono, per avere quella degli altri devo per forza collegarmi con il Designer o sapendo le dimensioni in ixel degli schermi c'è possibilità di ricavarmi lo Scale con una formula ?
 

LucaMs

Expert
Licensed User
Longtime User
Ho visto il video di Erel, ho aggiunto la mia configurazione del telefono

Suppongo che intendi dire che hai creato un variant su misura per il tuo smartphone. Non devi farlo, usa i variant di default, 320x480 per il portrait e 480x320 per il landscape.

Parlando in modo estremamente tecnico: te ne devi fregare degli Scale degli altri dispositivi!

Usa gli ancoraggi, un po' di codice script per aggiustare le cose, l'autoscaleall e le cose "dovrebbero" andare bene.
E per lanciare lo script, premi F5, anche se di solito è automatico, quando metti il cursore nell'Editor degli script.

Per vedere come verrebbe su altri dispositivi, seleziona:
1580893179978.png
 

Pisinho

Active Member
Licensed User
Longtime User
Quello che non capisco, forse ho letto poco (immagino) è se inserendo i 3 variant per i 3 modelli di smartphone che abbiamo in azienda, l'applicazione si adegua da sola in base al variant trovato o bisogna gestirlo da codice ?
Nel caso debba farlo da codice, devo allora gestirmi anche le varie icone con pixel differenti e tutto il resto ?
Mi sono perso... :(
 

Pisinho

Active Member
Licensed User
Longtime User
OK, grazie mille LucaMs sempre preciso.
Nel frattempo ho visto il discorso ancoraggi..fin qui OK.
Ora studiamoci un po di cosette sugli script...
 

Sagenut

Expert
Licensed User
Longtime User
Il discorso Layout è sempre un passo doloroso.
Come ti ha detto @LucaMs devi imparare ad usare gli ancoraggi e soprattutto lo Script nel Designer.
In questo modo vedrai che con un pó di pazienza riuscirai ad adattarti a quasi tutti i telefoni.
Se proprio non ne esci da solo conviene che tu posti un tuo file di Layout così possiamo provare a sistemarlo e potrai vedere le differenze.
 
D

Deleted member 103

Guest
Per adattare tutte le view allo schermo puoi usare gli ancoraggi e gli script. Il problema più grande é il testo che non si adatta automaticamente, per questo devi usare un po' di codice, guarda questo post:
 
Top