Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
B4A en Español
Desarrollo Rápido de App utilizando BASIC
Por Wyken Seagrave
Traducción de Javier Párraga González
Publicado por Penny Press, 176 Greendale Road, Coventry,
CV5 8AY, United Kingdom
sales@pennypress.co.uk
ISBN
9781871281453 (ebook)
9781719029940 (Libro)
9781871281460 (edición rústica)
Tabla de Contenido
Tabla de Contenido
Prólogo de Erel Uziel
Prólogo
Introducción
Para quien es este libro
Para el Principiante
Para el Profesional
Cómo está organizado este libro
Convenciones usadas en este libro
Código
Descripción de los Menús
Especificando Argumentos de Funciones
Acrónimos
Recursos
Actualizaciones gratuitas
Boletín Informativo
Quisiéramos conocer tu opinión
Sobre el Autor
Agradecimientos
Parte 1: Conceptos Básicos
1.1 Primeros pasos
Versiones
Versión de B4A
Versión de Android
Dos Versiones
Que se necesita para ejecutar B4A
Instalando la Versión de Evaluación
Descarga de la version de evaluación de B4A
Instalando y ejecutando la version de evaluación
Lo que se puede ver
Tu primera App
Cómo agregar tu primer comando
Depuración
Legado versus Depurador Rápido
Puntos de interrupción (Breakpoints)
Salvar el programa
B4A-Bridge
Instalar B4A-Bridge en tu dispositivo
Ejecutar B4A-Bridge en tu dispositivo
Tabla de Contenidos ii
Configurar Rutas
Javac.exe
Android.jar
Librerías Adicionales
Carpeta de Módulos Compartidos
Actualizando a una nueva versión
Parte 2: Creando su App
2.1 El Proyecto
Módulos
Módulo Main de Actividad principal
Servicio Starter
Atributos
Sección Atributos del Proyecto
#AdditionalRes: Location, Package (opcional)
#ApplicationLabel:
#BridgeLogger: True
#CanInstallToExternalStorage:
#CustomBuildAction: Step, Command, Arguments
#DebuggerDisableOptimizations: Value
#DebuggerForceFullDeployment:
#DebuggerForceStandardAssets:
#ExcludeClasses: Value List
#MultiDex: True
#SignKeyAlias:
#SignKeyFile:
#SignKeyPassword:
#SupportedOrientations: Value
#VersionCode: Value
#VersionName: Name
Atributos de compilación de Librería
Icono del Proyecto
Nombre del paquete
Nombre Único
Caracteres Permitidos
URL de Google Play
Precaución: el Nombre no se puede cambiar
El Manifest
Editor de Manifest
Evitar los caracteres de final de cadena
Comandos Manifest
minSdkVersion
android:targetSdkVersion
Comandos Condicionales del Manifest
#Region and #End Region
Macros del Editor de Manifest
Más información
2.2. Diseñando su App
Satisfacer Deseos y Necesidades
Versiones de Android
Popularidad de las versiones Android
La Pantalla de Android
Barra de Estado (Status Bar)
Barra de Navegación (Navigation Bar)
Notificaciones
Diseño de Apps paso a paso
Principios básicos de Diseño
Barra de Título (Title Bar)
Action Bar (o App Bar)
Menú
Tabla de Contenidos v
Ventana Archivos
Ventana de Código
Árbol de vistas
Reiniciar
El Diseñador Abstracto
Coincidir Variante Elegida
Controles de Vista
Menús de contexto
Selección de vistas
Código del Diseñador
Añadir vistas en código
2.5 Referencia de código del diseñador
En Segundo plano (Background)
Scripts del Diseñador y Código de Actividad
Ejecutando Código (Scripts)
Conceptos Clave
Pixel
Resolución
dpi : dots per inch (puntos por pulgada)
Tamaño de Pantalla
Dip
Tamaño del Texto
Pantalla Estándar
Escala
Estrategía de Acople y Relleno
Conceptos básicos de código del diseñador
Seleccionando Variantes
Lenguaje de Script
Variables
%x and %y
Propiedades dentro de Scripts
Advertencia: Configure las propiedades internas antes de las externas
Propiedades del Texto
Otras Propiedades
Métodos
Otras palabras clave
Métodos de Actividad
Activity.RerunDesignerScript (LayoutFile As String, Width As Int, Height As Int)
AutoScale: Diseños para diferentes tamaños de dispositivos
Como funciona AutoScale
Como ver el efecto del AutoScale
Cómo ver el efecto de AutoScale en el tamaño del texto
Cómo usar AutoScale
AutoScaleRate(rate)
AutoScaleAll
AutoScale(View)
Diferentes Diseños para Vertical y Horizontal
Estrategia de escalado
Edición de vistas en un programa
2.6 Compilación, Depuración y Pruebas
Compilación
Versión de Android
Configuración de Compilación
Definición de Configuración de Compilación
Lista de Configuración de Compilacion
Compilación Condicional
Modos de Compilación
Modo Depuración
Modo Release
Release (obfuscated)
Tabla de Contenidos vii
Compilación Condicional
Compilador de Línea de Comandos
Ejecutar desde archivos de lote (Batch Files)
Depuración
#ExcludeFromDebugger Attribute
Reiniciar (F11)
Depurador Rápido
Limitaciones del Depurador Rápido
Como funciona el Depurador Rápido
Edición de código utilizando el Depurador Rápido
Depuración Legado
Breakpoints (Puntos de Interrupción)
Limitaciones del Breakpoint
Control del Depurador
Ventana Depurar
Pila de LLamadas
Lista de Variables
Observar
Consulta Flotante
Registro (Logging)
Registro con B4A-Bridge en el modo de distribución (Release)
Compilando para Material Design
Tema Holo
Temas Material en el Diseñador WYSIWYG Designer
Probando tu aplicación
Conectando el Depurador al Dispositivo o al Emulador
Canales de comunicación para Depuración
Abrir el Canal
B4A-Bridge
Depuración USB
Conexión del dispositivo vía USB
Android Debug Bridge
Depuración con USB
El Emulador o el Administrador de Dispositivos Virtuales de Android (AVD)
Introducción
Como interactúa B4A con los dispositivos emulados
Utilizando el Android Virtual Device Manager
No hay pestañas disponibles
Android Virtual Devices (AVDs)
Creando un AVD
AVD Name (Requerido)
Device (Requerido)
Target (Requerido)
CPU / ABI (Requerido)
Keyboard (Teclado)
Skin (Requerido)
Front / Back Camera (Cámara Delantera / Trasera)
Memory Options (Opciones de Memoria)
Internal Storage (Almacenamiento Interno)
SD Card (Tarjeta SD)
Emulation Options (Opciones de emulación)
Creación de un Device Definition (Definición de Dispositivo)
Ejecución de Dispositivo Virtual y ajuste de escala para la Emulación de Tamaño Real
Sin Escalado
Escala a tamaño real
Interacción con su Dispositivo Virtual
Abreviaturas de teclado para PC
Abreviaturas de teclado para el Mac
Intercambio de archivos con el PC
Solucionar problemas de conexión
Tabla de Contenidos viii
Atributos de la Actividad
Variables dentro de una Actividad
Ciclo de Vida de una Actividad
Eventos de la Actividad
Sub Activity_Create (FirstTime As Boolean)
Sub Activity_Resume
Sub Activity_Pause (UserClosed As Boolean)
StartActivity (Activity As Object)
Activity.Finish vs ExitApplication
Crear un Menú
Actividades vs Formularios Windows
Múltiples Módulos de Actividad
Módulo de Clase
¿Qué es una Clase?
Beneficios de las Clases
Ejemplo
Sub Class_Globals
Variables Públicas vs Privadas
Subs Públicos vs Privados
Clases vs Tipos
Clases vs Módulos de Código
Añadir un Módulo de Clase
Estructuras de Clases
Polimorfismo
Auto-Referencia
Clases y el Objeto Actividad
Actividades que extienden las clases
Limitaciones de las Clases
Módulo de Código
Módulo de Servicio
Por qué usar un servicio
Como interactúa el usuario con un Servicio
Alternativa a una Actividad
El Servicio Starter
Los Servicios vistos por Android
Como iniciar un Servicio
Iniciar un servicio mientras la App está en segundo plano
Cuándo Terminan los Servicios
Wake Lock (bloqueo de activación)
Código de Servicio
Atributos de los Servicios
SubRoutines (Subrutinas)
Cuando Usar un Servicio
Notificaciones
Accediendo a otros módulos
Ejemplos de Proyectos Usando Servicios
2.10 Publicando y Monetizando su App
Ayuda al Usuario
Branding and Marketing (estrategia de marca y comercialización)
Configurando los Parámetros del Proyecto
Nombre del Paquete
Atributos del Proyecto
Configuración de Iconos
Icono de Google Play Store
Icono de Inicio
[Proyecto > Elegir Icono]
Iconos Action Bar
Crear Iconos
Fuentes de Iconos
Implementando MipMap
Tabla de Contenidos xi
Variables
Constantes
Tipos
Tipos Primitivos
Literales Hexadecimales
Tipos No-Primitivos
Tipos Básicos
Pasar por Referencia los tipos No-Primitivos
Conversión de Tipos
Rank
Creando sus propios Tipos
Objectos
Inicializació de Objetos
Declaración de Variables
Sentencia Dim
No Opción Explicita
Avisos del editor sobre variables no declaradas
Asignación de Valores
Verificación de Tipo
Uso de Variables no asignadas
Pasar por Valor
Pasar por Referencia
Nombres de Variables
Notación Hungará
Arrays (Matrices)
Dimensiones
Declarando un Array
Tipo por Defecto
No se puede cambiar las dimensiones
Guardando y Recuperando Datos
Rellenar un array utilizando la palabra clave Array
Tamaño de un Array
Arrays de Objetos
Las Dimensiones del Array son Fijas
Lists (Listas)
Maps (Mapas)
Type. Definir tipos de variables
Declaración de Tipos
Tipos Recursivos
Casting
Visibilidad de las Variables
Expresiones y Operadores
Expresiones matemáticas
Operadores Relacionales
Operadores Lógicos
Expresiones Regulares
Sentencias Condicionales
If – Then
If-Then-End If
If-Then-Else-End If
Select – Case
Estructuras de Bucle
For – Next
For-Each
Do-While
Do-Until
Salir de un Bucle
Diferencias entre B4A y Visual Basic
Subs
Declarando un Sub
Tabla de Contenidos xiii
Nombre de un Sub
LLamar a un Sub
Parámetros
Valor de retorno
Creando Tooltips para Subs
Subs Reanudables
Se pueden pausar
Contiene Sleep o Wait For
El Sub reanudable está en pausa
Tipo ResumableSub
Sleep
Wait For
Eventos
Eventos básicos de los Objetos
Respuesta a un Evento
Ejemplo
Gestor de Eventos Compartido
View Events
Eventos de vista más comunes
Control de Errores
Errores en Tiempo de Ejecución
Excepciones
Excepciones en tiempo de ejecución no capturadas
Try-Catch
Cuando utilizer un Try-Catch
Manipulación de cadenas
Cadenas Mutables
Las funciones de Cadenas
Formateado de números
Palabras Clave
Abs (Number As Double) As Double
ACos (Value As Double) As Double
ACosD (Value As Double) As Double
Array
Asc (Char As Char) As Int
ASin (Value As Double) As Double
ASinD (Value As Double) As Double
ATan (Value As Double) As Double
ATan2 (Y As Double, X As Double) As Double
ATan2D (Y As Double, X As Double) As Double
ATanD (Value As Double) As Double
BytesToString (Data() As Byte, StartOffset As Int, Length As Int, CharSet As String) As String
CallSub (Component As Object, Sub As String) As String
CallSub2 (Component As Object, Sub As String, Argument As Object) As String
CallSub3 (Component As Object, Sub As String, Argument1 As Object, Argument2 As Object) As
String
CallSubDelayed (Component As Object, Sub As String)
CallSubDelayed2 (Component As Object, Sub As String, Argument As Object)
CallSubDelayed3 (Component As Object, Sub As String, Argument1 As Object, Argument2 As
Object)
CancelScheduledService (Service As Object)
Catch
cE As Double
Ceil (Number As Double) As Double
Tabla de Contenidos xiv
LongClick
PermissionResult (Permission As String, Result As Boolean)
Touch (Action As Int, X As Float, Y As Float)
Miembros de Activity
ACTION_DOWN As Int
ACTION_MOVE As Int
ACTION_UP As Int
AddMenuItem (Title As String, EventName As String)
AddMenuItem2 (Title As String, EventName As String, Bitmap1 As Bitmap)
AddMenuItem3 (Title As String, EventName As String, Bitmap1 As Bitmap, AddToActionBar As
Boolean)
AddView (View1 As View, Left As Int, Top As Int, Width As Int, Height As Int)
Background As Drawable
CloseMenu
Color As Int [write only]
DisableAccessibility (Disable As Boolean)
Finish
GetAllViewsRecursive As IterableList
GetStartingIntent As Intent
GetView (Index As Int) As View
Height As Int
Initialize (EventName As String)
Invalidate
Invalidate2 (Rect1 As Rect)
Invalidate3 (Left As Int, Top As Int, Right As Int, Bottom As Int)
IsInitialized As Boolean
Left As Int
LoadLayout (Layout As String) As LayoutValues
NumberOfViews As Int [read only]
OpenMenu
RemoveAllViews
RemoveViewAt (Index As Int)
RequestFocus As Boolean
RerunDesignerScript (Layout As String, Width As Int, Height As Int)
SendToBack
SetActivityResult (Result As Int, Data As Intent)
SetBackgroundImage (Bitmap1 As Bitmap) As BitmapDrawable
SetLayout (Left As Int, Top As Int, Width As Int, Height As Int)
Tag As Object
Title As CharSequence
TitleColor As Int
Top As Int
Width As Int
Application
Miembros de Application
Icon As Bitmap
LabelName As String
PackageName As String
VersionCode As Int
Tabla de Contenidos xviii
VersionName As String
Bit
Operaciones de bits
Miembros:
And (N1 As Int, N2 As Int) As Int
ArrayCopy ( SrcArray As Object, SrcOffset As Int, DestArray As Object, DestOffset As Int, Count As
Int ) As Void
InputStreamToBytes (In As Inputstream) As Byte()
Not (N As Int) As Int
Or (N1 As Int, N2 As Int) As Int
ParseInt (Value As String, Radix As Int) As Int
ShiftLeft (N As Int, Shift As Int) As Int
ShiftRight (N As Int, Shift As Int) As Int
ToBinaryString (N As Int) As String
ToHexString (N As Int) As String
ToOctalString (N As Int) As String
UnsignedShiftRight (N As Int, Shift As Int) As Int
Xor (N1 As Int, N2 As Int) As Int
Constantes
Colors
DialogResponse
Gravity
KeyCodes
Typeface
CSBuilder
CharSequence
Estilo con CSBuilder
PopAll es muy recomendable
Encadenamiento de Métodos CSBuilder
Uso de un objeto CSBuilder
Miembros
Alignment ( Alignment As android.text.Layout.Alignment ) As CSBuilder
Append ( Text As java.lang.CharSequence ) As CSBuilder
BackgroundColor ( Color As int ) As CSBuilder
Bold As CSBuilder
Clickable ( EventName As String, Tag As Object ) As CSBuilder
Color ( Color As int ) As anywheresoftware.b4a.objects.CSBuilder
EnableClickEvents ( Label As android.widget.TextView ) As void
Image ( Bitmap As Bitmap, Width As Int, Height As Int, Baseline As Boolean ) As CSBuilder
Initialize As CSBuilder
IsInitialized As Boolean
Length As Int [read only]
Pop As CSBuilder
PopAll As CSBuilder
RelativeSize ( Proportion As float ) As CSBuilder
ScaleX ( Proportion As float ) As CSBuilder
Size ( Size As int ) As CSBuilder
Strikethrough As CSBuilder
ToString As java.lang.String
Typeface ( Typeface As android.graphics.Typeface ) As CSBuilder
Underline As CSBuilder
Tabla de Contenidos xix
TextWriter
Intent
Miembros:
Action As String
ACTION_APPWIDGET_UPDATE As String
ACTION_CALL As String
ACTION_EDIT As String
ACTION_MAIN As String
ACTION_PICK As String
ACTION_SEND As String
ACTION_VIEW As String
AddCategory (Category As String)
ExtrasToString As String
Flags As Int
GetData As String
GetExtra (Key As String) As Object
HasExtra (Key As String) As Boolean
Initialize (Action As String, URI As String)
Initialize2 (URI As String, Flags As Int)
IsInitialized As Boolean
PutExtra (Name As String, Value As Object)
SetComponent (Component As String)
SetType (Type As String)
WrapAsIntentChooser (Title As String)
LayoutValues
Miembros:
ApproximateScreenSize As Double [read only]
Height As Int
Scale As Float
toString As String
Width As Int
List
Como usar una Lista
Miembros:
Map
Como usar un Map
Miembros:
MediaPlayer
Evento: Complete
Miembros:
Duration As Int [read only]
Initialize
Initialize2 (EventName As String)
IsInitialzied As Boolean
IsPlaying As Boolean
Load (Dir As String, FileName As String)
Looping As Boolean
Pause
Play
Position As Int
Release
Tabla de Contenidos xxi
Panel
ProgressBar
RadioButton
ScrollView
SeekBar
Spinner
TabHost
ToggleButton
View
WebView
3.4 Código en Línea
Devolviendo datos a B4A
Parte 4: Librerías
4.1 Librerías
Introducción
¿Qué es una librería?
Tipos de Librerías
Librería Principal
Librerías Estándar
Librerías Oficiales Adicionales
Librerías de Usuario Adicionales
Carpeta de librerías adicionales
Como indicar al IDE dónde se encuentran las librerías adicionales
Mensaje de error "¿Falta una referencia de librería?"
Actualización de las Librerías Internas
Referenciando Librerías
Aviso sobre las Librerías no Utilizadas
Uso de Librerías
Actualización de Librerías Adicionales
Uso del código en línea para acceder a las librerías
Creación de Librerías
Beneficios de la creación de Librerías
Preparación de su Librería
Excluir la Actividad Main
Atributos Específicos de Librería
Atributos del Proyecto
Atributos del Módulo
Atributos de Clases
Como compilar una Librería
Salida
Librerías de widgets sin pantalla de inicio
Como publicar su librería
4.2 Librerías Estándar incluidas en la Versión Completa
Introducción
Lista de Librerías Estándar
Librería de Accesibilidad
Lista de tipos:
Accesibilidad
Miembros:
GetUserFontScale As Float
SetContentDescription (View1 As View, Content As CharSequence)
SetNextFocusDown (ThisView As View, NextView As View)
SetNextFocusLeft (ThisView As View, NextView As View)
SetNextFocusRight (ThisView As View, NextView As View)
SetNextFocusUp (ThisView As View, NextView As View)
Librería Administrador
Enlace en línea
AdminManager
Tabla de Contenidos xxiv
Librería de Animación
Animation
Librería Audio
Lista de tipos:
AudioRecordApp
AudioStreamer
Beeper
JetPlayer
MediaPlayerStream
SoundPool
VideoRecordApp
VideoView
Librería B4XEncryption
B4XCipher
Librería BitmapCreator
Lista de tipos:
ARGBColor
BitmapCreator
DrawTask
PremultipliedColor
Librería CallSubUtils (heredada)
CallSubUtils
RunDelayedData
Librería Camera
Clase CameraEx
Lista de tipos:
Camera
Librería Camera2
Camera2
CameraSize
Librería ContentResolver
Lista de tipos:
ContentResolver
ContentValues
Uri
Librería DateUtils
DateUtils
Libería Daydream
Daydream
Librería FirebaseAdMob
Lista de tipos:
AdView
InterstitialAd
NativeExpressAd
RewardedVideoAd
Librería FirebaseAnalytics
FirebaseAnalytics
Librería FirebaseAuth
FirebaseAuth
FirebaseUser
Librería FirebaseNotifications
FirebaseMessaging
RemoteMessage
Librería FirebaseStorage
FirebaseStorage
StorageMetadata
Librería GameView
Tutorial
Lista de tipos:
BitmapData
Tabla de Contenidos xxv
GameView
Librería GPS
Lista de tipos:
GPS
GPSSatellite
Location
Librería HTTP (Legacy)
Lista de tipos:
HttpClient
HttpRequest
HttpResponse
Librería HttpUtils2 (Legacy)
HttpJob
Librería IME
IME
Librería JavaObject
JavaObject
Librería JSON
Acerca de JSON
JSONGenerator
JSONParser
Librería KeyValueStore2
KeyValueStore
Librería LiveWallpaper
LWEngine
LWManager
Librería Network
Lista de tipos:
ServerSocket
Socket
UDPPacket
UDPSocket
Librería NFC
Librería versión 2.01
A cerca de NFC
NdefRecord
NFC
TagTechnology
Librería OkHttp
Lista de tipos:
OkHttpClient
OkHttpRequest
OkHttpResponse
Librería OkHttpUtils2
HttpJob
HttpUtils2Service
MultipartFileData
Librería Phone
CallItem
CallLog
Contact
Contacts [Objeto antiguo]
Contacts2
ContentChooser
Email
LogCat
PackageManager
Phone
PhoneAccelerometer [Objeto antiguo]
PhoneCalls
Tabla de Contenidos xxvi
PhoneEvents
PhoneId
PhoneIntents
PhoneOrientation [Objeto antiguo]
PhoneSensors
PhoneSms
PhoneVibrate
PhoneWakeState
RingtoneManager
Sms
SmsInterceptor
SmsMessages
VoiceRecognition
Librería de Activity de Preferencias
Limitaciones de PreferenceActivity
Lista de tipos:
PreferenceCategory
PreferenceManager
PreferenceScreen
Librería RandomAccessFile
AsyncStreams
B4XSerializator
CompressedStreams
CountingInputStream
CountingOutputStream
RandomAccessFile
Librería Reflection
Notas
Reflector
Librería RuntimePermissions
RuntimePermissions
Librería Serial
Lista de tipos:
BluetoothAdmin
Serial
Librería Sip
Lista de tipos:
Sip
SipAudioCall
Librería SQL
Lista de tipos:
Cursor
ResultSet
SQL
Librería StringUtils
StringUtils
Librería TTS
TTS
Librería USB
Lista de tipos:
MtpDevice
UsbAccessory
UsbDevice
UsbDeviceConnection
UsbEndpoint
UsbInterface
UsbManager
UsbRequest
Librería ViewsEx
FloatLabeledEditText
Tabla de Contenidos xxvii
RatingBar
Switch
Librería xCustomListView
CLVItem
CustomListView
Librería XmlSax
XML
Sax
Atributos
SaxParser
Librería XUI
Lista de tipos:
B4XBitmap
B4XCanvas
B4XFont
B4XPath
B4XRect
B4XView
XUI
4.3 Módulos y Librerías Adicionales
Introducción
Encontrar Librerías Adicionales
Carpeta de Librerías Adicionales
Indicar al IDE dónde encontrar librerías adicionales
Librerías y Clases Oficiales Adicionales
Adiquity
AdMob
AnotherDatePicker class
AsyncStreamsText
Analytics
Audio
Bluetooth Low Energy
Camera
CameraEx
DBUtils
DropBox Sync
Excel
Facebook User Authentication
Firebase RemoteConfig
GamePad
Google Play Services
HttpServer
InAppBilling
JSch
JTidy
Licensing
NB6
Net
Librería NotificationListener
OAuth
PayPal
SearchView
SMB
Speak Button
SQLCipher
StateManager
Librería StdActionBar
TableView
Tap for Tap
USB Host
Tabla de Contenidos xxviii
USBSerial
XMLBuilder
YouTube
Librerías de Usuario Adicionales
Introducción
Para obtener o actualizar una librería de usuario
¿Cuáles son las que necesita un proyecto?
Como usar una librería
Lista de librerías
Librerías de Usuario Adicionales
Descarga de Librerías de Usuarios
Plantillas de Clase a medida
Como crear una librería
Como compartir tu librería
Licencia
Librería de Diálogos
Fuente
Notas
ColorDialog
ColorDialogHSV
ColorPickerDialog
CustomDialog
CustomDialog2
DateDialog
FileDialog
InputDialog
NumberDialog
TimeDialog
Librería TabHostExtras
getTabContentViewPadding (tabHost1 As TabHost) As RectWrapper
getTabEnabled (tabHost1 As TabHost, index As Int) As Boolean
getTabHeight (tabHost1 As TabHost) As Int
getTabHostPadding (tabHost1 As TabHost) As RectWrapper
getTabTextSize (tabHost1 As TabHost) As Float
getTabVisibility (tabHost1 As TabHost, index As Int) As Boolean
setTabContentViewPadding (tabHost1 As TabHost, left As Int, top As Int, right As Int, bottom As Int)
setTabEnabled (tabHost1 As TabHost, enabled As Boolean)
setTabEnabled2 (tabHost1 As TabHost, enabled As Boolean, index As Int)
setTabGradientDrawable (tabHost1 As TabHost, orientation As String, color1 As Int, color2 As Int,
cornerRadius As Float)
setTabGradientDrawable2 (tabHost1 As TabHost, orientation As String, color1 As Int, color2 As Int,
cornerRadius As Float())
setTabHeight (tabHost1 As TabHost, tabHeight As Int)
setTabHostPadding (tabHost1 As TabHost, left As Int, top As Int, right As Int, bottom As Int)
setTabTextColor (tabHost1 As TabHost, Color As Int)
setTabTextColorStateList (tabHost1 As TabHost, ColorStateListName As String)
setTabTextSize (tabHost1 As TabHost, TextSize As Float)
setTabTitle (tabHost1 As TabHost, Title As String, TabIndex As Int)
setTabVisibility (tabHost1 As TabHost, visible As Boolean)
setTabVisibility2 (tabHost1 As TabHost, visible As Boolean, index As Int)
Librería Toggle
Parte 5: Herramientas y servicios externos
5.1 Servicios Firebase
¿Qué es Firebase?
Integración de servicios Firebase en B4A
Más información sobre las API de Google para Android
Servicios de Firebase soportados en B4A
FirebaseAnalytics: Analytics & crash reports
Notifications / Push messages
Publicidad de AdMob
Tabla de Contenidos xxix