Italian LANDSCAPE di Testa in Giù

Gianni Sassanelli

Active Member
Licensed User
Longtime User
Buongiorno,
ho postato la richiesta anche sul forum inglese ma non ho ricevuto aiuto.
ho creato una APP forzando la visualizzazione in Landscape (orizzontale)
per farlo ho inserito nel main il seguente codice:
B4X:
    #Region  Project Attributes
    #ApplicationLabel: TS TrendAgenti
    #VersionCode: 1
    #VersionName: 2017.1.107
    #SupportedOrientations: landscape
    #CanInstallToExternalStorage: True
    #FullScreen: True
    #IncludeTitle: True
#End Region

Purtroppo su alcuni device l'applicazione viene mostrata di testa in giù sembra che anzichè ruotare di 90° gradi venga ruotata di 270°

se elimino la riga
B4X:
#SupportedOrientations: landscape
il problema non si manifesta ma è brutto che l'applicazione possa essere ruotata in quanto tutte le view non possono essere utilizzate in modalità verticale (portrait)

qualcuno può aiutarmi?
Grazie
 

MarcoRome

Expert
Licensed User
Longtime User
Prova:
SetScreenOrientation
se hai una activity in particolare che deve essere landscape puoi scrivere:
SetActivityAttribute(nome_activity, android:screenOrientation, "landscape")
Inoltre, guarda anche questa DOCUMENTAZIONE
e sul sito hai diverse paginette che trattano la questione ( QUI )
 

Gianni Sassanelli

Active Member
Licensed User
Longtime User
Ciao Marco,
se inserisco la riga che mi hai suggerito si manifesta lo stesso problema ovvero che la windows è in landscape ma purtroppo si vede di testa in giù

Il problema è che su alcuni device il sensore di Landscape ruota di 90 ° in altri ruota di -90° (senso antiorario)+

questa cosa si dovrebbe gestire con una opzione del manifest o dell'applicazione ma non so come fare.
 

Gianni Sassanelli

Active Member
Licensed User
Longtime User
ciao a Tutti,
e grazie per i tentativi di aiuto alcuni dei quali risolvevano il problema ma non nella maniera che mi aspettavo.
Eseguendo le rotazioni da codice anzichè da Maniferst o Main, il risultato è che l'applicazione partiva di testa in giù e poi si ruotava nel verso corretto.
Questo è molto brutto da vedersi.
Ho risolto mettendo nella Region Project Attribute del Main la seguente stringa suggeritami da Erel.
B4X:
#Region  Project Attributes
   #SupportedOrientations: sensorLandscape
#End Region
in questa maniera l'applicazione parte già nel verso giusto ed è forzata a funzionare in landscape

Ancora grazie a tutti
 

LucaMs

Expert
Licensed User
Longtime User
Molto strano e molto strano che questo problema "si manifesti" soltanto adesso; nel senso che non avevo mai sentito parlare di quella impostazione, fino ad oggi.

Avevo male interpretato la tua richiesta, supponevo che tu avessi più activity, alcune da visualizzare in portrait ed altre in landscape. Se, invece, tutta l'app è da visualizzare in landscape, sarebbe dovuta essere sufficiente l'impostazione #SupportedOrientatios: Landscape.

Adesso sarà necessario capire se quella costante, sensorLandscape, sia necessaria da qualche versione di Android in poi e se funzioni correttamente anche con le versioni precedenti, perché a questo punto mi domando cosa ci si debba fare con l'altra costante, Landscape!
 

MarcoRome

Expert
Licensed User
Longtime User
Molto strano e molto strano che questo problema "si manifesti" soltanto adesso; nel senso che non avevo mai sentito parlare di quella impostazione, fino ad oggi.

Avevo male interpretato la tua richiesta, supponevo che tu avessi più activity, alcune da visualizzare in portrait ed altre in landscape. Se, invece, tutta l'app è da visualizzare in landscape, sarebbe dovuta essere sufficiente l'impostazione #SupportedOrientatios: Landscape.

Adesso sarà necessario capire se quella costante, sensorLandscape, sia necessaria da qualche versione di Android in poi e se funzioni correttamente anche con le versioni precedenti, perché a questo punto mi domando cosa ci si debba fare con l'altra costante, Landscape!

API level 9
 

MarcoRome

Expert
Licensed User
Longtime User
Molto strano e molto strano che questo problema "si manifesti" soltanto adesso; nel senso che non avevo mai sentito parlare di quella impostazione, fino ad oggi.

Avevo male interpretato la tua richiesta, supponevo che tu avessi più activity, alcune da visualizzare in portrait ed altre in landscape. Se, invece, tutta l'app è da visualizzare in landscape, sarebbe dovuta essere sufficiente l'impostazione #SupportedOrientatios: Landscape.

Adesso sarà necessario capire se quella costante, sensorLandscape, sia necessaria da qualche versione di Android in poi e se funzioni correttamente anche con le versioni precedenti, perché a questo punto mi domando cosa ci si debba fare con l'altra costante, Landscape!

Se vedi sul post #2 Documentazione e cerchi per sensorlandscape la definizione è:
"sensorLandscape"Landscape orientation, but can be either normal or reverse landscape based on the device sensor. Added in API level 9.
 

LucaMs

Expert
Licensed User
Longtime User
API level 9
Il che significa che è molto vecchia, da Android 2.3. A maggior ragione mi domando come mai se ne parli soltanto adesso, qui su b4x, dato che in oltre 3 anni non mi era mai capitato di leggerne.

Se vedi sul post #2 Documentazione e cerchi per sensorlandscape la definizione è:
"sensorLandscape"Landscape orientation, but can be either normal or reverse landscape based on the device sensor. Added in API level 9.

E, detto in italiano puro, ... "ecchevvordì?".

Spesso la documentazione è un po' troppo sintetica, purtroppo. In questo caso, tentando una traduzione letterale, per quanto il mio scarso inglese me lo permetta, dovrebbe essere più o meno:

[Impostazione] sensorLandscape - orientamento "landscape" [orizzontale], MA può essere sia orizzontale normale che rovesciata in base al sensore del dispositivo.

Con tutta la buona volontà a me sembra incomprensibile. Dalla descrizione sembrerebbe addirittura peggiorare la situazione, sembra che dica: "Poi dipende dal sensore se invertire (capovolgere) o meno il layout"! Mentre invece pare risolvere il problema che ha riscontrato Gianni.

Ma se risolve il problema in questione, a che servirebbe la costante Landscape? :eek:
 

MarcoRome

Expert
Licensed User
Longtime User
Il che significa che è molto vecchia, da Android 2.3. A maggior ragione mi domando come mai se ne parli soltanto adesso, qui su b4x, dato che in oltre 3 anni non mi era mai capitato di leggerne.


"sensorLandscape"Landscape orientation, but can be either normal or reverse landscape based on the device sensor. Added in API level 9.

E, detto in italiano puro, ... "ecchevvordì?".

Spesso la documentazione è un po' troppo sintetica, purtroppo. In questo caso, tentando una traduzione letterale, per quanto il mio scarso inglese me lo permetta, dovrebbe essere più o meno:

[Impostazione] sensorLandscape - orientamento "landscape" [orizzontale], MA può essere sia orizzontale normale che rovesciata in base al sensore del dispositivo.

Con tutta la buona volontà a me sembra incomprensibile. Dalla descrizione sembrerebbe addirittura peggiorare la situazione, sembra che dica: "Poi dipende dal sensore se invertire (capovolgere) o meno il layout"! Mentre invece pare risolvere il problema che ha riscontrato Gianni.

Ma se risolve il problema in questione, a che servirebbe la costante Landscape? :eek:

Ciao Luca:D ( hai la battuta sempre pronta ;), te possino )
Allora il landscape mantiene fisso in posizione landscape su un lato, quindi se rigiri il dispositivo lo vedrai sempre in landscape ma senza la possibilità che si rigiri in landscape in base a come hai orientato il dispositivo. reverse landscape invece lo vedrai sempre in landscape ma in più ruota in base a come orienti il dispositivo.
Se cerchi sul sito vedrai che se ne parla dal 2012 ( QUI AD ESEMPIO ) ( sta volta ti è sfuggito :D:D )
Anche SetScreenOrientation che di solito si utilizza con 0 per Landscape o 1 per Portrait o -1 unspecified. Può essere utilizzato con 8 = Reverse Landscape sinistro ( per farti un esempio se inserisci una label con scritto "CIAO" vedrai il CIAO in landscape lato sinistro ) , 9 = Reverse Portrait , cioè al contrario del portrait normale , 10 in tutte le direzioni ....
 

LucaMs

Expert
Licensed User
Longtime User
Se cerchi sul sito vedrai che se ne parla dal 2012 ( QUI AD ESEMPIO ) ( sta volta ti è sfuggito :D:D )
Proprio perché è di 5 anni fà, mi è sfuggito (anche se di solito cerco le soluzioni per gli altri e quindi trovo anche quelle vecchie).

Suppongo (spero :D) di aver capito: il semplice Landscape fissa su un lato-base l'orientamento e quindi se ruoti il dispositivo di 180° vedrai tutto sottosopra, mentre il SensorLandscape farà sì che venga ruotato di conseguenza il layout, ovvero si accorgerà che il "lato-base" adesso è quello opposto, adattandosi di conseguenza.

Detto questo, avrei fatto prima a provare, per avere conferma di aver capito :D.

Grazie Marco.


P.S. Provato ed è effettivamente come l'ho capito.
Erel dovrebbe modificare il commento del template, aggiungendo le altre possibili costanti.
 
Last edited:
Top