Italian Risoluzioni diverse

ken87

Active Member
Licensed User
Longtime User
Devo sviluppare un programma che deve fuzionare con due risoluzioni diverse.
Usando un select case che a seconda del dispositivo mi carica la risoluzione giusta.

B4X:
select case
       Case 320
       inizializza_comp_320
      Case 480
       inizializza_comp_480
       '..... ecc

Come faccio a rilevare la risoluzione del dispositivo per poi inserirla in un sect case?
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Un metodo è alla femminina
B4X:
Width=100%x/1dip
Height=100%y/1dip

Ma se cerchi nel forum trovi Come ricavare la risoluzione del dispositivo e anche il numero di pollici. Adesso sono fuori sede non mi ricordo bene l'istruzione , ma alla femmina funziona sempre :p
 

Star-Dust

Expert
Licensed User
Longtime User

Star-Dust

Expert
Licensed User
Longtime User
Lo spero
 

ken87

Active Member
Licensed User
Longtime User
Ciao,
non ho capito qual'è istruzione che rileva la rislozione per poi fare lo swich
 

Star-Dust

Expert
Licensed User
Longtime User
Femminina Orizzontale
B4X:
Width=100%x/1dip
select case Width
       Case 320
       inizializza_comp_320
      Case 480
       inizializza_comp_480
       '..... ecc
End Select

Femminina Verticale
B4X:
Heigth=100%y/1dip
select case Heigth
       Case 480
       inizializza_comp_480
      Case 600
       inizializza_comp_600
       '..... ecc
End Select

I device su cui deve girare l'App avranno una risoluzione (esempio: 320*480 oppure 480*600) ... dipende se tu cerchi di identificarlo dall'altezza o dalla larghezza.

Anche se su design trovi il modo per identificarlo. Se l'interfaccia la progetti col design hai anche gli script personalizzati in base alla risoluzione.

Puoi usare anche
B4X:
Width=GetDeviceLayoutValues.Width / 1dip
Heigth=GetDeviceLayoutValues.Height / 1dip

oppure
B4X:
Width=Activity.Width / 1dip
Heigth=Activity.Height / 1dip

Per ultimo ma non meno importante
B4X:
Sub Display
   Dim r As Reflector
   r.Target = r.GetContext
   r.Target = r.RunMethod("getResources")
   r.Target = r.RunMethod("getDisplayMetrics")
   Log(r.GetField("xdpi"))
   Log(r.GetField("ydpi"))
End SUb
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User

ken87

Active Member
Licensed User
Longtime User
Ciao usando questa istrizione
B4X:
Width=GetDeviceLayoutValues.Width / 1dip
Heigth=GetDeviceLayoutValues.Height / 1dip
Con emulatore blustack mi da giustamnete
1280
720
Ma se lo faccio girare sia s3 che su s7 che hanno risoluzioni diverse mi da sempre
Altezza :640
Larghezza : 360
Perchè?
Se uso questa con bluestack
B4X:
    Width=Activity.Width / 1dip
               heigth=Activity.Height / 1dip
Altezza 1170
larghezza 720
Con blue stack

se provo questo infineù
B4X:
Dim r As Reflector
    r.Target = r.GetContext
    r.Target = r.RunMethod("getResources")
    r.Target = r.RunMethod("getDisplayMetrics")
    Log(r.GetField("xdpi"))
    Log(r.GetField("ydpi"))
mi da 160.0
160.0
Tutti valori diversi

Ecco il codice:
B4X:
#Region  Project Attributes
    #ApplicationLabel: B4A Example
    #VersionCode: 1
    #VersionName:
    'SupportedOrientations possible values: unspecified, landscape or portrait.
    #SupportedOrientations: portrait
    #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.

End Sub

Sub Globals
   
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.

    Private Label3 As Label
    Private Label4 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Dim larg As String
    Dim alt As String

    'Width=100%x/1dip
    'Heigth=100%y/1dip

   
'    Width=Activity.Width / 1dip
    'heigth=Activity.Height / 1dip
   
   
    'Width = 100%x/1dip
    'heigth=100%y/1dip
    larg=GetDeviceLayoutValues.Width / 1dip
    alt=GetDeviceLayoutValues.Height / 1dip
    Log (larg)
    Log(alt)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("uno")
    'Log(heigth)
    Label4.Text = larg
    Label3.Text = alt
   
    Dim r As Reflector
    r.Target = r.GetContext
    r.Target = r.RunMethod("getResources")
    r.Target = r.RunMethod("getDisplayMetrics")
    Log(r.GetField("xdpi"))
    Log(r.GetField("ydpi"))

End Sub

Sub Activity_Resume

End Sub
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Hai provato lì'ultimo esempio?

Se tu non vuoi la risoluzione in base alla densità, ma quella assoluta non dividere per 1dip.
Un condo é la risoluzione e un altro è la dimensione.
Dividendo per la densità ottieni la dimensione nominale dello schermo.
 

ken87

Active Member
Licensed User
Longtime User
Ciao,
Ho risolto ora posso fare le due activity per i cellulari diversi.
Grazie mille
 

Star-Dust

Expert
Licensed User
Longtime User
Prego, come hai risolto
 
Top