Bienvenido a Universo Android

Estamos actualizando el sitio web! Pronto subiremos el nuevo diseño de la web! Gracias por su paciencia!

Como crear un Popup en Android

Como crear un Popup

Android Popup Example

Hola amigos en esta ocasión les traemos el tutorial de como crear un mensaje Popup personalizado a tu gusto.

Crear un proyecto en Android Popup (Aquí)

Vamos a crear un proyecto para ver nuestro ejemplo y desarrollarlo paso a paso.

Como crear un Proyecto en Android Studio

Como crear un Proyecto en Android Studio

Proyecto en Android Tutorial

Para dar inicio a este curso deberá tener instalado Android Studio.
Esta es una prueba sencilla para aprender la forma de crear un proyecto en Android Studio de manera fácil de comprender.  

Abrir Android  Studio
Nos mostrara una ventana con la siguiente información.
  1. Nombre de la aplicación (Application Name)
  2. Dominio de la compañía (Company Domain)
  3. Nombre del paquete (Package Name)
  4. Ubicación del proyecto (Project Location)
En el nombre del proyecto podemos utilizar el nombre que deseemos.
Ejemplos: Prueba1, Practica1, Ejemplo1

Una vez terminando el ingreso de la información presionamos continuar (Next)

La siguiente ventana nos mostrará la orientación hacia los dispositivos android.
(Target android devices)
Donde tendremos que seleccionar los tipos de plataformas en los que se ejecutara nuestra aplicación.

Bueno hay que tener claro lo que es un SDK.

Android Studio - Como crear un emulador AVD fácilmente

Como crear un emulador AVD fácilmente

COMO CREAR EMULADOR ANDROID STUDIO AVD

Crear y Administra Nuevos Dispositivos Virtuales

La definición del Android Virtual Device (AVD) permite definir las características de un teléfono Android, una Tablet, o un dispositivo Android Wear o Android TV que desees simular en Android Emulator. El Administrador de AVD permite crear y administrar  nuevosAVD de manera muy sencilla.

Para hacer pruebas con tu App de manera efectiva, debes crear un AVD que emule cada tipo de dispositivo que la App vaya a ser utilizada. Un ejemplo, te recomendamos crear un AVD para cada nivel de API igual o superior al valor que especificaste para tu minSdkVersion. Al probar con diferentes niveles API superiores a los que necesita tu App, garantizas la compatibilidad con versiones superiores cuando los usuarios descargan actualizaciones de sistema no tendrán problemas de compatibilidad.

Android Studio - Curso Español

Android Studio - Curso Español

Android Studio - Barra o Paleta de Herramientas - Layouts

Android Studio - Barra o Paleta de Herramientas - Layouts

Android Studio Layouts

En este nuevo paso aprenderemos como están definidas las herramientas en Android Studio.
Las herramientas en android las usaremos para crear el diseño de nuestras aplicaciones.

Aprenderemos paso a paso como se utiliza cada herramienta en Android Studio.
Pero primero vamos a definir cada uno de los controles que hay y su uso en el diseño.

1. Layouts.

Son las vistas que se utilizan para crear los diseños de nuestras aplicaciones que serán las ventanas que se mostraran en las actividades.

Android Studio - Barra o Paleta de Herramientas - Widgets - Parte 2

Android Studio - Barra o Paleta de Herramientas - Widgets - Parte 2

Android Studio Widgets Tutorial 

Continuando con la siguiente parte del los Widgets de android seguiré definiendo con conceptos básicos cada uno para que los entiendan de forma simple pero especifica.

ConstraintLayout en Android

ConstraintLayout en Android

ConstraintLayout es el sistema de diseño más potente y flexible de Android. En este tutorial aprenderás a dominar ConstraintLayout para crear interfaces responsivas y eficientes en tus aplicaciones Android con Java.

¿Qué es ConstraintLayout en Android?

ConstraintLayout es un ViewGroup que te permite crear layouts complejos y planos (sin anidación) mediante un sistema de restricciones entre vistas. Fue introducido por Google para reemplazar layouts anidados y mejorar el rendimiento de las aplicaciones Android.

CRUD con Room Database en Android

CRUD con Room Database en Android

Introducción

En el desarrollo de aplicaciones Android modernas, el manejo de datos locales es una necesidad fundamental. Ya sea para guardar usuarios, tareas, configuraciones o información temporal, contar con una base de datos eficiente y segura es clave.
Aquí es donde entra Room Database, la librería oficial de Google que actúa como una capa de abstracción sobre SQLite.

En este artículo aprenderás cómo implementar un CRUD completo (Create, Read, Update, Delete) con Room Database usando Java en Android Studio, siguiendo buenas prácticas, estructura limpia y código fácil de mantener.

Este contenido está orientado a desarrolladores Android que desean trabajar con bases de datos locales de forma profesional.


¿Qué es Room Database?

Room es parte de Android Jetpack y facilita el trabajo con SQLite al proporcionar:

  • Verificación de consultas en tiempo de compilación

  • Menos código boilerplate

  • Integración con LiveData y ViewModel

  • Seguridad y mejor rendimiento

Room se compone de tres elementos principales:

  1. Entity → Representa una tabla

  2. DAO (Data Access Object) → Define las consultas

  3. Database → Punto de acceso a la base de datos


¿Qué es CRUD?

CRUD representa las cuatro operaciones básicas sobre datos:

  • Create → Insertar registros

  • Read → Leer registros

  • Update → Actualizar registros

  • Delete → Eliminar registros

Room permite implementar estas operaciones de forma clara y estructurada.


1️⃣ Configuración inicial de Room

Agrega las dependencias en tu archivo build.gradle (Module):

implementation "androidx.room:room-runtime:2.6.1" annotationProcessor "androidx.room:room-compiler:2.6.1"

Sincroniza el proyecto antes de continuar.


2️⃣ Crear la Entity (Tabla)

Ejemplo: una tabla llamada Usuario

import androidx.room.Entity; import androidx.room.PrimaryKey; @Entity(tableName = "usuarios") public class Usuario { @PrimaryKey(autoGenerate = true) public int id; public String nombre; public String email; public Usuario(String nombre, String email) { this.nombre = nombre; this.email = email; } }

✔ Cada Entity representa una tabla
✔ Cada atributo es una columna


3️⃣ Crear el DAO (Data Access Object)

Aquí definimos las operaciones CRUD.

import androidx.room.Dao; import androidx.room.Insert; import androidx.room.Query; import androidx.room.Update; import androidx.room.Delete; import java.util.List; @Dao public interface UsuarioDao { @Insert void insertar(Usuario usuario); @Query("SELECT * FROM usuarios") List<Usuario> obtenerTodos(); @Update void actualizar(Usuario usuario); @Delete void eliminar(Usuario usuario); @Query("DELETE FROM usuarios") void eliminarTodo(); }

✔ Room valida estas consultas automáticamente
✔ Reduce errores comunes de SQLite


4️⃣ Crear la clase Database

import android.content.Context; import androidx.room.Database; import androidx.room.Room; import androidx.room.RoomDatabase; @Database(entities = {Usuario.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { private static AppDatabase instancia; public abstract UsuarioDao usuarioDao(); public static synchronized AppDatabase getInstance(Context context) { if (instancia == null) { instancia = Room.databaseBuilder( context.getApplicationContext(), AppDatabase.class, "app_database" ).allowMainThreadQueries().build(); } return instancia; } }

allowMainThreadQueries() solo para pruebas
✔ En producción se recomienda usar AsyncTask, Executors o ViewModel


5️⃣ Implementar CRUD en una Activity

Insertar datos (Create)

AppDatabase db = AppDatabase.getInstance(this); Usuario usuario = new Usuario("Carlos", "carlos@email.com"); db.usuarioDao().insertar(usuario);

Leer datos (Read)

List<Usuario> lista = db.usuarioDao().obtenerTodos(); for (Usuario u : lista) { Log.d("USUARIO", u.nombre + " - " + u.email); }

Actualizar datos (Update)

usuario.nombre = "Carlos Actualizado"; db.usuarioDao().actualizar(usuario);

Eliminar datos (Delete)

db.usuarioDao().eliminar(usuario);

Buenas prácticas con Room

  • No ejecutar consultas en el hilo principal

  • Usar ViewModel + LiveData

  • Manejar versiones con migraciones

  • Separar lógica de UI y datos

  • Usar repositorios


Ventajas de usar Room Database

✅ Menos código
✅ Más seguridad
✅ Escalable
✅ Compatible con arquitectura moderna
✅ Ideal para apps offline


Preguntas frecuentes (FAQ)

❓ ¿Room reemplaza a SQLite?

No, Room es una capa sobre SQLite que facilita su uso.

❓ ¿Room funciona sin internet?

Sí, es una base de datos local.

❓ ¿Puedo usar Room con RecyclerView?

Sí, es una combinación muy común.

❓ ¿Room es recomendado por Google?

Sí, es la solución oficial para bases de datos locales.

❓ ¿Se puede usar Room con Firebase?

Sí, Room puede funcionar como caché local.

CheckBox y Multi-Selección en Android

CheckBox y Multi-Selección en Android

Hola amigos 👋 Bienvenidos a un nuevo tutorial de Universo Android.
Hoy aprenderemos a trabajar con CheckBox y sistemas de multi-selección en Android, un componente fundamental cuando necesitas que el usuario elija varias opciones al mismo tiempo.

Los CheckBox se usan en formularios, configuraciones, filtros, preferencias, listas de opciones y muchísimos casos reales dentro de aplicaciones Android.


✅ Al finalizar este tutorial aprenderás:

✔️ Qué es un CheckBox y cuándo usarlo
✔️ Diferencia entre CheckBox y RadioButton
✔️ Implementar CheckBox simples
✔️ Multi-selección con varios CheckBox
✔️ CheckBox dinámicos
✔️ Multi-selección con AlertDialog
✔️ Manejo de eventos y estados
✔️ Buenas prácticas y errores comunes
✔️ Casos de uso reales
✔️ Preguntas frecuentes (FAQ – Rich Snippets)


🟨 1. ¿Qué es un CheckBox?

CheckBox es un componente de interfaz gráfica que permite al usuario activar o desactivar una opción. A diferencia del RadioButton, pueden seleccionarse múltiples CheckBox al mismo tiempo.

📌 Se utiliza cuando:

  • Hay más de una opción válida

  • Las opciones no son excluyentes

  • El usuario puede marcar varias preferencias


🟨 2. CheckBox vs RadioButton

ComponenteSelección
CheckBoxMúltiple
RadioButtonÚnica
SwitchActivar / Desactivar

👉 Regla básica:

  • Una sola opción → RadioButton

  • Varias opciones → CheckBox


🟨 3. Crear el Proyecto

  1. Abre Android Studio

  2. Nuevo proyecto → Empty Activity

  3. Nombre: CheckBoxMasterApp

  4. Package: com.example.checkboxapp

  5. Lenguaje: Java

  6. Minimum SDK: API 21+


🟨 4. Diseño Básico con CheckBox

📄 activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="🎯 Selecciona tus hobbies" android:textSize="22sp" android:textStyle="bold" android:layout_marginBottom="16dp" /> <CheckBox android:id="@+id/cbMusic" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="🎵 Música" /> <CheckBox android:id="@+id/cbSports" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="⚽ Deportes" /> <CheckBox android:id="@+id/cbGames" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="🎮 Videojuegos" /> <Button android:id="@+id/btnSubmit" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Confirmar Selección" android:layout_marginTop="16dp" /> <TextView android:id="@+id/txtResult" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Resultado" android:layout_marginTop="16dp" android:textSize="16sp" /> </LinearLayout> </ScrollView>

🟨 5. Manejo de CheckBox en Java

📄 MainActivity.java

package com.example.checkboxapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.Button; import android.widget.CheckBox; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private CheckBox cbMusic, cbSports, cbGames; private TextView txtResult; private Button btnSubmit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cbMusic = findViewById(R.id.cbMusic); cbSports = findViewById(R.id.cbSports); cbGames = findViewById(R.id.cbGames); txtResult = findViewById(R.id.txtResult); btnSubmit = findViewById(R.id.btnSubmit); btnSubmit.setOnClickListener(v -> mostrarSeleccion()); } private void mostrarSeleccion() { StringBuilder resultado = new StringBuilder("Seleccionaste:\n"); if (cbMusic.isChecked()) resultado.append("- Música\n"); if (cbSports.isChecked()) resultado.append("- Deportes\n"); if (cbGames.isChecked()) resultado.append("- Videojuegos\n"); txtResult.setText(resultado.toString()); } }

🟨 6. Detectar Cambios en Tiempo Real

cbMusic.setOnCheckedChangeListener((buttonView, isChecked) -> { if (isChecked) { txtResult.setText("🎵 Música activada"); } });

👉 Útil para configuraciones y preferencias.


🟨 7. Multi-Selección con AlertDialog

Una forma muy común de usar CheckBox es dentro de un AlertDialog.

String[] opciones = {"Java", "Kotlin", "Flutter", "React Native"}; boolean[] seleccionados = {false, false, false, false}; new AlertDialog.Builder(this) .setTitle("Selecciona tus tecnologías") .setMultiChoiceItems(opciones, seleccionados, (dialog, which, isChecked) -> { seleccionados[which] = isChecked; }) .setPositiveButton("Confirmar", (dialog, which) -> { StringBuilder result = new StringBuilder("Seleccionaste:\n"); for (int i = 0; i < opciones.length; i++) { if (seleccionados[i]) { result.append("- ").append(opciones[i]).append("\n"); } } txtResult.setText(result.toString()); }) .setNegativeButton("Cancelar", null) .show();

📌 Ideal para filtros, ajustes y formularios rápidos.


🟨 8. CheckBox Dinámicos (Generados por Código)

String[] opciones = {"Opción 1", "Opción 2", "Opción 3"}; for (String opcion : opciones) { CheckBox checkBox = new CheckBox(this); checkBox.setText(opcion); layout.addView(checkBox); }

👉 Muy usado cuando las opciones vienen de una base de datos o API.


🟨 9. Obtener Todas las Opciones Seleccionadas

ArrayList<String> seleccionados = new ArrayList<>(); for (int i = 0; i < layout.getChildCount(); i++) { View view = layout.getChildAt(i); if (view instanceof CheckBox) { CheckBox cb = (CheckBox) view; if (cb.isChecked()) { seleccionados.add(cb.getText().toString()); } } }

🟨 10. Mejores Prácticas

✅ DO (Hacer):

  • Etiquetas claras y legibles

  • Agrupar opciones relacionadas

  • Usar ScrollView si hay muchas opciones

  • Validar que el usuario seleccione algo

  • Guardar preferencias con SharedPreferences

❌ DON'T (No hacer):

  • Demasiados CheckBox sin orden

  • Usarlos cuando solo debe elegirse una opción

  • No indicar qué pasa al seleccionar

  • No validar selecciones vacías


🟨 11. Casos de Uso Reales

📌 Formularios de registro
📌 Filtros de búsqueda
📌 Preferencias de usuario
📌 Selección de intereses
📌 Configuración de notificaciones
📌 Juegos (habilidades, poderes, mods)


🎯 Conclusión

Los CheckBox y sistemas de multi-selección son componentes esenciales en Android. Usarlos correctamente mejora la experiencia del usuario y permite crear aplicaciones más flexibles, intuitivas y profesionales.

Dominar este componente te ayudará a:
✔️ Crear mejores formularios
✔️ Implementar filtros avanzados
✔️ Manejar preferencias de usuario
✔️ Diseñar interfaces claras y modernas


❓ Preguntas Frecuentes (FAQ – Rich Snippets)

1. ¿Puedo seleccionar varios CheckBox a la vez?
Sí, esa es su función principal.

2. ¿Cuándo usar RadioButton en lugar de CheckBox?
Cuando solo debe elegirse una opción.

3. ¿Cómo valido que al menos uno esté seleccionado?
Revisa isChecked() antes de continuar.

4. ¿Puedo usar CheckBox en RecyclerView?
Sí, pero debes manejar correctamente el estado.

5. ¿CheckBox funciona con Material Design?
Sí, puedes usar estilos Material o Material 3.

6. ¿Puedo guardar selecciones?

Sí, usando SharedPreferences o Firestore. 

Firestore Database en Android

Firestore Database en Android

Hola amigos 👋 Bienvenidos a un nuevo tutorial de Universo Android.

En esta ocasión aprenderemos a usar Cloud Firestore, una de las bases de datos más potentes de Firebase para aplicaciones Android modernas.

Firestore permite guardar, leer y sincronizar datos en tiempo real, incluso sin conexión a internet, lo que lo hace ideal para apps, juegos, chats, sistemas de usuarios y paneles administrativos.