Italian Sfondo random ad ogni avvio

FreeWolF

Active Member
Licensed User
Longtime User
Ciao, vorrei creare un'applicazione che ogni volta che sia avvia, visualizza un'immagine di sfondo casuale tra tre possibili.

Tramite il designer ho importato 3 immagini con estensione .jpg e le ho chiamate rispettivamente Back1.jpg, Back2.jpg e Back3.jpg.

Ora, ho messo nel programma questo codice:

Dim Sfondo As BitmapDrawable
Dim Scelta_Rnd as int

Scelta_Rnd = Rnd(1,4)

Select Scelta_Rnd

Case 1:
Sfondo.Initialize(LoadBitmap(File.DirAssets, "Back1.jpg"))
Sfondo.Gravity = Gravity.FILL
Activity.Background = Sfondo

Case 2:
Sfondo.Initialize(LoadBitmap(File.DirAssets, "Back2.jpg"))
Sfondo.Gravity = Gravity.FILL
Activity.Background = Sfondo

Case 3:
Sfondo.Initialize(LoadBitmap(File.DirAssets, "Back3.jpg"))
Sfondo.Gravity = Gravity.FILL
Activity.Background = Sfondo

End Select

In questo modo però, il programma si compila senza problemi ma non funziona.
In pratica:
- Se imposto nel designer l' immagine che ho importato visualizza tutte le volte solo quella (l' immagine Back1.jpg di case 1 per essere precisi, che è la stessa che ho selezionato nel designer).
- Se invece non seleziono nulla nel designer come sfondo ma tengo le immagini importate, lo sfondo dell'applicazione rimane nero.

Non capisco dove sbaglio...qualcuno riuscirebbe ad aiutarmi? Grazie mille !!
 
Last edited:

Dominex

Active Member
Licensed User
Longtime User
Prova così.

B4X:
Dim Sfondo As BitmapDrawable
Dim Scelta_Rnd as int
Dim bmpSfondo As Bitmap

Scelta_Rnd = Rnd(1,4)
      
Select Scelta_Rnd
  Case 1:
    bmpSfondo.Initialize(File.DirAssets, "Back1.jpg")
    Sfondo.Initialize(bmpSfondo)
    Activity.Background = Sfondo
  Case 2:
    bmpSfondo.Initialize(File.DirAssets, "Back2.jpg")
    Sfondo.Initialize(bmpSfondo)
    Activity.Background = Sfondo
  Case 3:
    bmpSfondo.Initialize(File.DirAssets, "Back3.jpg")
    Sfondo.Initialize(bmpSfondo)
    Activity.Background = Sfondo
End Select
 

Dominex

Active Member
Licensed User
Longtime User
Funziona! Grazie mille!! :)

Inviato dal mio GT-I9100 con Tapatalk 2
Figurati, puoi anche ottimizzare un po' il codice:

B4X:
Select Scelta_Rnd
  Case 1:
    bmpSfondo.Initialize(File.DirAssets, "Back1.jpg")
  Case 2:
    bmpSfondo.Initialize(File.DirAssets, "Back2.jpg")
  Case 3:
    bmpSfondo.Initialize(File.DirAssets, "Back3.jpg")
End Select
Sfondo.Initialize(bmpSfondo)
Activity.Background = Sfondo
 

Jost aus Soest

Active Member
Licensed User
Longtime User
Ancora piu' corto, senza Select: ;)

B4X:
bmpSfondo.Initialize(File.DirAssets, "Back" & Scelta_Rnd & ".jpg")
Sfondo.Initialize(bmpSfondo)
Activity.Background = Sfondo
 
Last edited:
Top