Italian primi tentativi e primi dubbi

powerflash

New Member
Ciao a tutti, mi sono appena iscritto e da poco cominciato a smanettare con i vari tutorial, mi sorge un dubbio però relativamente alla risoluzione dello schermo.
Possiedo un tablet android quindi per adesso credo che farò i miei test con questa risoluzione ma nel caso di un progetto definitivo quante versioni di screen conviene produrre? l'ideale sarebbe farne 3? una per smartphone, quella per tablet 7" e quella per i 10" ? oppure sarebbe opportuno produrre l'applicazione su tutte le risoluzioni più conosciute ?.. che non so quante siano
 

ivanomonti

Expert
Licensed User
Longtime User

Per ogni cosa esiste la soluzione, anche usando poche righe di codice, ma e stato implementato un tools per la gestione degli infiniti schermi.

trovi degli esempi pratici e altri meno ma questo problema e minore, io ad esempio uso questo codice e mi trovo bene


crea una classe e usa questo codice, io per mia comodità uso pannelli, ogni pannello i propri controlli, in questo modo puoi organizzarti tutta app in una sola activity e tanti pannelli, o per ogni activity il suo pannello, vedi tu come vuoi gestire la cosa.

B4X:
Sub SettingLayoutPanel(ac As Activity, pn As Panel)

    Dim xleft, xtop, xwidth, xheight, lwidth, lheigh As Int
    Dim ScaleX, ScaleY As Float

    lwidth = ac.Width ' larghezza display
    lheigh = ac.Height ' altezza display
    
    ScaleX = lwidth / 320 / Density
    ScaleY = lheigh / 430    / Density    ' 480 - 2 * 25  

    For i = 0 To pn.NumberOfViews-1
        ' calculate
        xleft = pn.GetView(i).Left * ScaleX
        xtop = pn.GetView(i).Top * ScaleY
        xwidth = pn.GetView(i).Width * ScaleX
        xheight = pn.GetView(i).Height * ScaleY
        ' setting object
        pn.GetView(i).SetLayout(xleft,xtop,xwidth,xheight)
    Next
   
End Sub

poi passi il tutto dalla activity o da richiesta

B4X:
Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("Main_Login")
   Panel1.Width = 100%x
   Panel1.Height = 100%y
   Panel1.Color = Setting.getColor(1)
   Dim c As ClassLayout
   c.Initialize()
   c.SettingLayoutPanel(Activity, Panel1)
End Sub

Mi trovo bene su Galaxy ace, Galaxy sII, Galaxy Note 10 e credo di aver coperto una buona parte dei display.
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…