Italian DoEvents..Non capisco...non capisco :D

CyclopDroid

Well-Known Member
Licensed User
Longtime User
No, non ho utilizzato lo Scale per questa ScrollView, perhé me la faceva scomparire.
Quell height=height*0.3 è sbagliato quindi si deve trovare un modo per rendere l'altezza che vdi bene per i vari devices.
Nel mentre, ho sistemato un problema scassa balle del doppio caricamento alla partenza, dovuto (leggendo un altro post) al KeepAlive che, andando in Resume rilanciava nuovamete l'Activity primaria. Così è bastato mettere una variabile globale boleana all'inizio della Sub Activity_Create, dopo aver chiamato la KeepAlive:


B4X:
Sub Activity_Create(FirstTime As Boolean)
   
   If isFirst = True Then
...
....
....
....
else
       musica.Initialize2("musica")
       If musica.IsPlaying=False Then     
             musica.Load(File.DirAssets,"Musica.mp3")
             musica.Looping=True
             musica.SetVolume(0.5,0.5)
             If Main.NoSound=False Then musica.Play 
        End If
     StayOn.KeepAlive(True)
end if

e nel Resume

B4X:
Sub Activity_Resume
    If musica.IsPlaying=False Then musica.play
    StayOn.KeepAlive(True)
    isFirst=True
    Activity_Create(True)
End Sub

In questo modo, si evita la doppia ripetizione ;)
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Ho capito poco, per via del ma di testa e del KeepAlive che non conosco (anche se il nome mi fa intuire il suo scopo). Ti succedeva che si metteva il dispositivo in standby o ripartiva la Activity_Create per via dell'orientamento? Mah, rileggerò a mente fresca.

La faccenda delle altezze sta diventando un problema generale. Se dai un'occhiata al thread che ho aperto, capirai che intendo dire.

In due parole, in quel thread io mi domando:

se io disegno un'immagine geometrica con un sw sul PC, mettiamo che io disegni qualche linea lunga 400 pixel (o in verticale!) e poi salvo l'immagine jpg;
caricandola in un dispositivo android, come posso sapere quei 400 pixel a quandi dpi di Android corrispondono (per poi adattare tutto?).

Anche se io scalo l'immagine, anche se il dispositivo ha le stesse dimensioni (ma magari sicuramente densità diversa), se poi voglio scrivere su quella linea, oppure fare altro relativamente a quella linea, penso (ma non ne sono certo!) di dover conoscere il rapporto tra le dimensioni del mio pixel sul PC ed i dpi di OGNI dispositivo.

Insomma, un bel casino, finora irrisolto.

Penso che tu possa risolvere quello dell'altezza esprimendola in % di Y.
Cioè, guardi che percentuale di Y occupa la scrollview nel variant e la usi nel codice:
mettiamo che il variant che hai usato come base sia alto 800dpi (e largo 1200dpi, che so) e la scrollview sia alta 400dpi, l'altezza della scrollview sarà il 50%y ((400dpi/800dpi) * 100). Se dopo caricamento del layout scrivi: MiaScrollView.Height = 50%y hai risolto.
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Grazie ancora per l'interessamento ma, quello che a me serviva era limitare l'altezza che incorreva fra due testi (checkboce labale) all'interno del Pannello con la ScrollView... nun c'ho capito manco io che ho scritto o_O :D
Comunque, sono riuscrito, nel mio scopo, con un semplice comando:

B4X:
chk.TextSize=14 *TextScale
lbl1.TextSize=14*TextScale   

'Rapporto Altezza fra le righe
height = 16dip*TextScale
''''''''''''''''''''''''''''''

lstChecks.Add(chk)
pnl.AddView(chk, 0, height * (IDtxt-1), 50%x, height)
pnl.AddView(lbl1, 37%x, height * (IDtxt-1), 37%x, height)

pnl.height = lstChecks.Size * height
pnl.BringToFront
DoEvents

ScrollView1.ScrollPosition = height * IDtxt-1
DoEvents
;)

..mnetre, invece, sto cercando di mettere lo zoom 5X come mi hai inviato nell'esempio, ma on riesco a capire il suo comportamento... tant'è che , metterndolo come hai fatto tu, a me non funziona e non appare affatto :eek:
Ho creato l'immagine nel design chiamata imv5x po, ad inizio Actvity, ho messo:


B4X:
Sub Activity_Create(FirstTime As Boolean)
If isFirst = True Then 
    lv = GetDeviceLayoutValues
    TextScale = lv.ApproximateScreenSize / 3.5
    ScrollView1.Initialize(0)
        pnl = ScrollView1.Panel
        lstChecks.Initialize
   
    Activity.LoadLayout("Gioco")
    Scale.ScaleAll(Activity,True)
          AnimZoom5x.InitializeScaleCenter("AnimZoom5x",0,0,1,1,imv5x)
    AnimZoom5x.Duration = 750
    AnimFade5x.InitializeAlpha("AnimFade5x", 1, 0)
    AnimFade5x.Duration = 750
.......
......
......

Poi quando si trova la parola massima:

B4X:
...
...
Case 1
            chk.TextColor=Colors.Yellow
            lbl1.TextColor=Colors.yellow
            chk.Checked=True
            imv5x.BringToFront
            imv5x.Visible = True
            AnimZoom5x.Start(imv5x)
            DoEvents
...
...

logicamente ho inserito anche le Sub correlate, ma nulla, non si vede niente... dove sto sbagliando? :confused:
 
Last edited:
Top