Ho una mezza dozzina di imageview (dimensioni approssimative 100 pixel) e vorrei abbellirne la visualizzazione con un effetto di ombra, una cornice laterale, qualcosa insomma che le renda più "simpatiche".
Qualche suggerimento ?
Grazie per l'attenzione.
Supponendo che le tue immagini siano 100x100, puoi provare a fare così:
creati un'immagine sfumata e colorata come meglio desideri (puoi usare programmi come GIMP), di dimensione 105x105
crea un Panel per ogni immagine che vuoi visualizzare, di dimensione 105x105, ed impostane come background l'immagine che hai creato prima, usando il comando MioPannello.SetBackgroundImage
aggiungi le immagini, impostandone come Parent il Panel specifico
In questo modo avrai le tue immagini come fossero in cornici, o con quello che tu avrai creato come immagine di sfondo.
Se hai tante immagini, questo potrebbe però influire sulle prestazioni.
In alternativa, ecco una procedura che puoi sfruttare per impostare il colore gradiente:
B4X:
Sub ColoreGradiente(col1 As Int, col2 As Int) As GradientDrawable
Dim gd As GradientDrawable
Dim c(2) As Int
c(0) = col1
c(1) = col2
gd.Initialize("TOP_BOTTOM", c)
gd.CornerRadius = 0
Return gd
End Sub
Panel.Background = ColoreGradiente(Colors.DarkGray, Colors.LightGray)
Grazie dei suggerimenti.
La prima soluzione non è adatta al mio caso poichè le dimensioni delle immaginine non sono tutte uguali.
La seconda potrebbe essere più praticabile in quanto da codice si dovrebbe riuscire a creare un pannello di dimensioni appena superiori a quelle della singola immaginina.
Una terza soluzione potrebbe essere l'uso del canvas su cui disegnare delle righine.
Non hai per caso una soluzione già fatta ! Chiedo troppo ?
La sub SetTextShadow suggerita da LucaMs non sembra che funzioni nè con i Panel nè con le ImageView.
Alla fine ho scelto il sistema che ritengo meno pesante, ossia disegnare un bordino in basso e a destra. Il risultato mi sembra soddisfacente (vedi allegato)
B4X:
'--- disegno una righina a destra ed in basso
' Dim C As Canvas
' C.Initialize (Activity)
Dim P2 As Path
'--- punto iniziale
Y=ivs(i-1).top+ivs(i-1).Height+1
X=ivs(i-1).Left+4
P2.Initialize (X,Y)
'--- linea in basso
X=ivs(i-1).Left+ivs(i-1).Width+1
P2.LineTo (X,Y)
'--- linea verticale a destra
Y=ivs(i-1).top+4
P2.LineTo (X,Y)
C.DrawPath(P2,Colors.RGB(20,20,20) ,False,3dip)