Sub Process_Globals
Public sql As SQL
End Sub
Sub Globals
Dim IE As RSImageEffects
Dim Lista_botones As List
Dim Color_Boton As Int = Colors.ARGB(255, 0, 0, 160)
Dim alto_boton As Int = 45%x + 50dip 'los 50 dip es el espacio donde irá el texto del botón
Dim ancho_boton As Int = 45%x
Dim columnas As Int = 2
Dim separacion As Int
Dim intTotalBotones As Int
End Sub
Sub Activity_Create(FirstTime As Boolean)
preparaDB
Dim SV As ScrollView
SV.Initialize(100dip) '100dip - Tamaño del panel provisional
SV.Panel.Color=Colors.White
Activity.AddView(SV, 0, 0, 100%x, 100%y)
Lista_botones = DBUTILS.ExecuteMemoryTable(sql, "SELECT id_boton, nombre_boton, imagen_boton FROM categorias", Null,0)
separacion = (100%x - (columnas * ancho_boton))/(columnas + 1) 'Separación horizontal entre botones a N columnas
intTotalBotones = Lista_botones.Size 'guarda el número total de botones a mostrar
'Determina el alto del Panel del SV según el número, tamaño, columnas y separación de los botones
SV.Panel.Height=(Ceil(intTotalBotones/columnas) * (alto_boton + separacion)) + separacion
Dim DatosBoton () As String
For Numero = 0 To intTotalBotones - 1
Dim boton As Button
DatosBoton = Lista_botones.Get(Numero) 'Recupera de la Lista de Botones los datos de cada uno
'Pasa como parámetros el SV, un botón, nº del botón, texto e imagen del botón
DibujaBoton (SV, boton, Numero, DatosBoton(0), DatosBoton(1),DatosBoton(2))
Next
'DoEvents
End Sub
Sub DibujaBoton (SV As ScrollView, boton As Button, Numero As Int, id As Int, texto As String, imagen As String)
Dim x, y As Int
boton.Initialize("btnV")
boton.Tag = Numero 'se almacena el número de orden de cada botón
Dim DestRect As Rect
Dim icono As Bitmap ' mediante canvas inserto la imagen para despues redondear
Dim iconoCanvas As Canvas
x = separacion + (ancho_boton + separacion) * (Numero Mod columnas) 'calcula la coordenada X del botón
y = separacion + (alto_boton + separacion) * Floor(Numero/columnas) 'calcula la coordenada Y del botón
SV.Panel.AddView(boton, x, y, ancho_boton, alto_boton) 'añade el botón al SV
icono.InitializeMutable(ancho_boton, alto_boton) ' inicializo el icono como bitmat modificable por el canvas
DestRect.Initialize(0dip, 0dip, ancho_boton, alto_boton - 50dip)
iconoCanvas.Initialize2(icono)
'Dibuja la imagen de fondo del botón, previamente redondeada (IE.Roundcorner)
iconoCanvas.DrawBitmap(IE.RoundCorner(LoadBitmapSample(File.DirAssets, imagen,ancho_boton, alto_boton),28), Null, DestRect)
boton.SetBackgroundImage(icono) 'coloca en el fondo del botón
boton.Gravity=Bit.Or(Gravity.BOTTOM, Gravity.CENTER_HORIZONTAL)
boton.Text = texto
boton.TextSize = 15
boton.TextColor=Color_Boton
End Sub
Sub btnv_click
Dim boton_pulsado As Button
boton_pulsado = Sender
ToastMessageShow("Botón pulsado nº: " & boton_pulsado.tag & " - " & boton_pulsado.Text, False)
End Sub
Sub preparaDB 'Borra y copia de nuev la BD
File.Delete(DBUTILS.GetDBFolder, "botones.db")
Dim rutaDB As String
rutaDB=DBUTILS.CopyDBFromAssets("botones.db")
sql.Initialize (rutaDB, "botones.db", True)
End Sub