Italian Difetto nella visualizzazione

AlpVir

Well-Known Member
Licensed User
Longtime User
Qualche rara volta la mia app appare, subito dopo avviata in questo modo :

Bad.jpg


mentre il più delle volte appare così :

OK.jpg

con il pulsante menu visibile (correttamente) in alto a sinistra.
Penso che sia una questione di tempistica in Activity_Create. Preciso che non uso layout ma disegno tutto con istruzioni del tipo
Activity.AddView (PanelGrigio, 0,0,100%x,100%y)
In particole le istruzioni che disegnato il pulsante menu sono le seguenti :
B4X:
'--- menu
    BotMenu.Initialize ("BotMenu")
    PanelAlto.AddView (BotMenu,100%x-39dip,1dip,38dip,40dip)
    BotMenu.SetBackgroundImage (LoadBitmap(File.DirAssets,"ic_menu_black_48dp.png"))
Come si potrebbe risolvere, tenendo conto che (come già detto) il difetto si presenta molto raramente ?
Forse (devo ancora provare) bloccando, prenotando in qualche modo tutta la larghezza dello schermo ?
Suggerimenti ?
Grazie per l'attenzione.
 

LucaMs

Expert
Licensed User
Longtime User
Preciso che non uso layout ma disegno tutto con istruzioni del tipo
Activity.AddView (PanelGrigio, 0,0,100%x,100%y)
Non è una grande scelta, perché ad ogni modifica/aggiunta ci perderai la testa.
Puoi sempre usare lo script nel Designer.

Strano quel che ti succede; suppongo nello stesso dispositivo, altrimenti non ti meraviglieresti.

Ah, tra l'altro se tu usassi il Designer, a volte potresti pubblicare qui il solo layout per farti consigliare/aiutare.

Comunque, benché sia strano il tutto, prova a mettere uno Sleep(30) dopo la costruzione completa della GUI o di alcune parti "coinvolte" nel problema.
 

LucaMs

Expert
Licensed User
Longtime User
Da codice ho tutto contemporaneamente sotto controllo e per tutto intendo la disposizione, precisa al pixel, delle view e del resto del codice.
Può darsi che sbagli ma ho iniziato così e mi trovo benino.
Volendo potresti scrivere le stesse istruzioni (o quasi) anche nello Script del Designer, avendo però più vantaggi.

Intanto, quando posizioni una View qualunque, nello Script potresti scrivere che un'altra venga in relazione alle prima.
Ad esempio:
B4X:
Button1.Top = Label1.Bottom + 5dip
Nota che nel sorgente di progetto NON hai la proprietà Bottom (motivo per cui scrissi una classe, che dovrebbe stare qui sul sito, chissà dove 😄). Non hai nemmeno la proprietà Right e ora non mi va di pensare ad altre, ho troppa fretta di scrivere il resto.

Poi hai il vantaggio che mentre digiti, ti mostrerà solo nomi di View che hai messo nel layout, mentre nel sorgente di programma ti elencherà un mare di variabili che non c'entrano un tubero. In realtà anche di variabili "dichiarate" nello Script stesso ma farebbero comunque parte dell'interfaccia grafica, non del resto del progetto.

Ti sto scrivendo cose meno "famose"/importanti, come gli ancoraggi, proprio perché se ne "parla" meno.

Altro vantaggio: avresti il codice per la UI ben separato da quello del progetto.

Potresti riutilizzare codice già testato e utile, con il DSE (che non è il vecchio "Dipartimento Scuola Educazione" 😁):
https://www.b4x.com/android/forum/threads/b4x-dse-designer-script-extensions.141312/

Puoi vedere subito PIU' O MENO gli effetti delle tue modifiche su display di varie dimensioni, mentre se scrivi il codice nel progetto non solo non puoi farlo ma se potessi, se usassi più dispositivi e/o emulatori, perderesti una vita ad installare l'app (più volte).

Per ora mi fermo, ma solo perché voglio un caffè 😁
 
Top