German Wieso werden die Routinen von unten nach oben abgearbeitet?

Midimaster

Active Member
Licensed User
Genau...aktualisieren! und um etwas nachträglich zu verändern, brauchst Du noch eine Referenz auf diesen Ersteintrag. Durch bloßes AddView einer lokalen Variable weißt Du aber später nicht mehr, wie Du an den Eintrag kommen kannst. Deshalb das Array aus ImageViews. Da kannst Du jeden Eintrag auch später noch gezielt ansprechen.

Wieviele ImageViews sind denn gleichzeitig sichtbar? Mehr als 10 kann der User doch optisch gar nicht mehr erfassen. Und alle die man nicht sieht müßten doch noch gar nicht geladen sein.

noch so eine Idee:
Das Angezeigte muss doch nicht unbedingt der Menge in der Datenbank entsprechen. Hier solltest Du nochmal umdenken. Änderungen erfolgen in der Datenbank und daraus wird die (viel kleinere) Anzeige aufgebaut.

Der Weg über das zerstören:
Du musst nicht die Views selbst zerstören, sondern sie erst mal aus der ScrollView herausnehmen. Solange sie dort enthalten sind werden sie nicht gelöscht. Das gilt auch für leere oder sehr kleine Imageviews (z.b. deine 0x0pix).
 

Lothar Kriegerow

Active Member
Hallo Midimaster,


wenn ich 10 anzeige, und 200 Einträge habe, müsste ich die zum flüssigen Scrollen irgendwie blitzschnell nachladen können.
Ich habe eine andere Anwendung mit mehreren 100 Einträgen. Dort geht das perfekt. Auch möchte Ich die Galerie nachbilden. Dort geht es auch.
Wenn ich in meine Anwendung ein DoEvents integriere, funktioniert es. (Das erschließt sich mir) Ein Sleep(x) geht nicht.

Das meine Methode nicht gut ist, kann sein, aber das Scrollen von 200 Einträgen geht richtig flott.

Gruß Lothar
 

klaus

Expert
Licensed User
Die 'einfachste' Lösung, was Midimaster ja schon vorgeschlagen hat, ist diese!

B4X:
Sub Show
    Scv.Panel.RemoveAllViews
    Scv.Panel.Height = 300dip * Bitmaps.Size
    For i = Bitmaps.Size - 1 To 0 Step -1

Mit Deinem Code sind die Bilder verzerrt, zumindest auf meinem Gerät.
Das Breite / Höhe Verhältnis ist nicht eingehalten.
Sind alle Bilder im gleichen Format ?
 

Lothar Kriegerow

Active Member
Hallo Midimaster,

die Bilder sind nur hier verzerrt, da es mir nur darum ging, mein Problem mit dem Text zu verdeutlichen. Die Bilder spielen hierbei noch keine Rolle. Die Bilder werden die unterschiedlichste Größe haben. Ich bin noch nicht so weit, die Bilder immer korrekt anzuzeigen und dabei die Höhe 200dpi einzuhalten. Wenn du da eine Idee hast, wäre ich glücklich.

Gruß Lothar

Ich komme aus Zeitmangel nur schleppend voran.
 

Lothar Kriegerow

Active Member
Oh sorry - Hallo Klaus,

Ich habe vom Handy geschrieben und dachte, es wäre Midimaster.
SORRY - Ich muss wohl total "bekloppt gewesen sein". Genau nach .RemoveAllViews hab ich gesucht. Genau das isses.

Vielen Dank Euch 2.

Ich setze mich jetzt in eine Ecke und schäme mich.

Noch mal wegen der verzerrten Bilder. Von der Sache her müsste ich ja 4 Fälle unterscheiden. In meinem Betrachter mache ich das so:





B4X:
Sub FotoAnzeigen
    Private bmp As Bitmap = LoadBitmap(Verz,MyText.Bild)
    Private FotoB, FotoH As Int
    Dim ScaleX, ScaleY As Int
    Dim BW, BH As Double
    Dim SF,BF As Float
    ScaleX= 100%x
    ScaleY=100%y
    SF=ScaleX/ScaleY                               '  Seitenverhältnis des Mobilteils
    BF=bmp.Width/bmp.Height              '   Seitenverhältnis des Bildes
    BW=  bmp.Width
    BH=bmp.Height
    If SF>1 Then                                  
        If BF>1 Then                              
            FotoH=100%y
            FotoB =ScaleY* BW / BH
        Else
            FotoB= 100%y
            FotoH = 100%x * BW/ BH
        End If
    Else
        If BF>1 Then
            FotoB= 100%x
            FotoH = 100%x / BF
        Else
            FotoH=100%y
            FotoB =ScaleY* BW / BH
        End If
    End If
    bmpFoto = xui.LoadBitmapResize(Verz,MyText.Bild , FotoB, FotoH,True)
    Imv.SetBitmap(bmpFoto)
    Imv.Left = 1dip
    Imv.Top = 1dip
    Imv.Width = FotoB
    Imv.Height = FotoH
End Sub

Es werden alle 4 Fälle abgefangen.
Jedenfalls werden so die Bilder je nach Hoch- oder Breitformat richtig angezeigt.

Gruß Lothar

Geht das eleganter?
 
Top