Italian Activity non considerano Navigation Toolbar

Discussion in 'Italian Forum' started by Gianni Sassanelli, Aug 10, 2018.

  1. Gianni Sassanelli

    Gianni Sassanelli Member Licensed User

    Buongiorno a tutti,
    ho un problema con la mia app quando tento di usarla su device con risoluzione 1080 x 1920 (HTC M9)

    Ho disegnato il layout della mia activity utilizzando una dimensione 1280 x 800 (risoluzione base scale 1)
    Ho inserito nel Bal la voce AUTOSCALE ALL

    #Region Project Attributes
    #SupportedOrientations: sensorLandscape 'Forzo la App in LandScape
    #End Region

    A questo punto se eseguo l'applicazione sul mio telefono il risultato è che viene eseguita la rotazione, ma la videata va sotto la navigation toolbar come visibile nello screen shot allegato
    Questo però accade solo con la risoluzione 1080 x 1920
    su altre risoluzioni tutto è ok

    Ho provato con gli emulatori AVD android ed ho creato diversi emulatori cambiando solo la risoluzione.
    Ebbene se creo un emulatore con questa risoluzione, mi accade lo stesso problema, ovvero che si ruota lo schermo ma la navigation toolbar rimane sulla Destra anzichè in basso e quindi B4a non se ne accorge.

    Come potete vedere la differenza sta nel fatto che in altre risuluzioni quando lo schermo ruota, la navigation toolbar si posiziona in basso (vedi img_2.png), mentre nella risoluzione 1080 x 1920 la toolbar si sposta sulla destra (vedi img_4.png) e questo mi genera casini
     

    Attached Files:

  2. LucaMs

    LucaMs Expert Licensed User

    Io non sarei così sicuro che questo accada solo con quella particolare risoluzione.

    Perché non hai semplicemente impostato:
    #SupportedOrientations: landscape
    ?

    Comunque, tu puoi fare in modo che la navigation bar sparisca del tutto (l'utente deve scorrere il dito per visualizzarla di nuovo) usando la modalità "Immersive".

    Il codice è quello dell'esempio di Erel:

    Code:
    Sub Activity_Create(FirstTime As Boolean)
     
       
    ' ***  Sets "immersive" mode.  ***
       Activity_WindowFocusChanged(True)
       
    Dim lv As LayoutValues = GetRealSize
       
    Dim jo As JavaObject = Activity
       jo.RunMethod(
    "setBottom"Array(lv.Height))
       jo.RunMethod(
    "setRight"Array(lv.Width))
       
    Activity.Height = lv.Height
       
    Activity.Width = lv.Width
     
       
    Activity.LoadLayout("IlTuoLayout")
    End Sub
    Code:
    Sub Activity_WindowFocusChanged(HasFocus As Boolean)
       
    If HasFocus Then
           
    Try
               
    Dim jo As JavaObject = Activity
               Sleep(
    100)
               jo.RunMethod(
    "setSystemUiVisibility"Array As Object(5894)) '3846 - non-sticky
           Catch
               
           
    End Try
       
    End If
    End Sub

    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
    Scrivendo questo codice nelle tue Activity, la navigation bar non dovrebbe comparire, né sotto né a destra.
     
  3. Star-Dust

    Star-Dust Expert Licensed User

    Hai provato su un dispositivo reale?

    Se le viste sono orizzontali evidentemente il sistema è impostato correttamente in Landascape come settato nell'attributo.
    Che la barra non corrisponda all'orientamento delle viste immagino sia un errore firmware non di B4A. Il sistema sembra riconoscere l'impostazione Landascape sulle viste ma sbaglia la barra. Ecco perché io proverei su un dispositivo fisico. Magari il firmware dell'emulatore non è corretto.

    Diverso sarebbe se anche le viste fossero in portrait. Allora supporremo che l'attributo sia ignorato, quindi useremmo altri metodi per forzare il Landascape da codice. Ma non è questo il caso
     
    Last edited: Aug 10, 2018
  4. LucaMs

    LucaMs Expert Licensed User

    Dimenticavo... a volte, in modalità debug, questo codice manda in crash l'app.

    Ora non ricordo con certezza ma se succede, cambia di poco il valore nella Sleep e/o aggiungine una nel blocco Catch che si trova in
    Activity_WindowFocusChanged.
     
  5. Gianni Sassanelli

    Gianni Sassanelli Member Licensed User

    allora rispondo in sequenza.
    1) uso sensorlandscape in quanto su alcuni device quando si imposta il Landscape lo schermo viene ruotato al contrario quindi si userebbe il tablet di testa in giù. questo cambia poco per la app ma è brutto da vedersi.
    2) si ho usato un dispositivo reale (HTC M9) il mio telefono sul quale ho iniziato a vedere il problema. Dopodichè ho creato un emulatore con le stesse caratteristiche del telefono per verificare se era solo un problema del software sul mio telefono. Ebbene ho verificato che sull'emulatore settato con quella particolare risoluzione capita lo stesso problema.
    3) le viste sono create direttamente in modalità landscape. In questo caso sono partito da una risoluzione 1280 x 800 . Ho disegnato tutto in questa risoluzione ma ho verificato che partendo da questa risoluzione, l'AUTOSCALE non funziona benissimo. Se parto da una risoluzione di 320x480 lo scale va invece molto bene

    Ho comunque risolto nascondendo la navigationtoolbar.
     
  6. Star-Dust

    Star-Dust Expert Licensed User

    Autoscale non è perfetto, è risaputo.

    Infatti con B4XCanvas è stato aggiunta una funzione per misurare la dimensione del testo e consentire di adattarlo alla dimensione della vista.

    Per il resto sono convinto che sia una questione di Android. Avevo un tablet Mediacom che sia in orizzontale che verticale la barra rimaneva senpre agganciata sullo stesso lato della cornice.
     
    Last edited: Aug 10, 2018
    Gianni Sassanelli likes this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice