En este módulo, aprenderemos a crear vistas personalizadas en Android y a utilizar el objeto Canvas para dibujar gráficos personalizados. Este conocimiento es esencial para desarrollar interfaces de usuario únicas y adaptadas a las necesidades específicas de tu aplicación.
- Introducción a las Vistas Personalizadas
¿Qué es una Vista Personalizada?
Una vista personalizada es una clase que extiende una de las clases de vista estándar de Android (como View, TextView, Button, etc.) y sobrescribe sus métodos para cambiar su comportamiento o apariencia.
¿Por qué usar Vistas Personalizadas?
- Flexibilidad: Permiten crear componentes de interfaz de usuario que no están disponibles en las bibliotecas estándar.
- Reutilización: Puedes encapsular comportamientos y estilos específicos en una vista personalizada y reutilizarlos en diferentes partes de tu aplicación.
- Optimización: A veces, es más eficiente crear una vista personalizada que combinar varias vistas estándar.
- Creando una Vista Personalizada Básica
Paso 1: Extender la Clase View
Primero, crea una nueva clase que extienda View:
public class CustomView extends View {
    public CustomView(Context context) {
        super(context);
    }
    public CustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
}Paso 2: Sobrescribir el Método onDraw
El método onDraw es donde dibujarás tu vista personalizada. Aquí es donde utilizas el objeto Canvas para dibujar gráficos.
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    // Aquí es donde dibujas tu vista personalizada
    Paint paint = new Paint();
    paint.setColor(Color.RED);
    canvas.drawRect(50, 50, 200, 200, paint);
}Paso 3: Usar la Vista Personalizada en un Layout XML
Para usar tu vista personalizada en un archivo de diseño XML, debes declarar el nombre completo de la clase:
<com.example.myapp.CustomView
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
- Uso del Objeto Canvas
El objeto Canvas proporciona métodos para dibujar gráficos en la pantalla. Aquí hay algunos métodos comunes:
- drawRect(float left, float top, float right, float bottom, Paint paint): Dibuja un rectángulo.
- drawCircle(float cx, float cy, float radius, Paint paint): Dibuja un círculo.
- drawLine(float startX, float startY, float stopX, float stopY, Paint paint): Dibuja una línea.
- drawText(String text, float x, float y, Paint paint): Dibuja texto.
Ejemplo: Dibujar un Círculo
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Paint paint = new Paint();
    paint.setColor(Color.BLUE);
    canvas.drawCircle(150, 150, 100, paint);
}
- Ejercicio Práctico
Ejercicio: Crear una Vista Personalizada que Dibuje un Gráfico de Barras
Paso 1: Crear la Clase BarChartView
public class BarChartView extends View {
    private Paint paint;
    private int[] data;
    public BarChartView(Context context, AttributeSet attrs) {
        super(context, attrs);
        paint = new Paint();
        data = new int[]{10, 20, 30, 40, 50};
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int width = getWidth();
        int height = getHeight();
        int barWidth = width / data.length;
        for (int i = 0; i < data.length; i++) {
            int barHeight = data[i] * height / 100;
            paint.setColor(Color.GREEN);
            canvas.drawRect(i * barWidth, height - barHeight, (i + 1) * barWidth, height, paint);
        }
    }
}Paso 2: Usar BarChartView en un Layout XML
<com.example.myapp.BarChartView
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>Solución del Ejercicio
La clase BarChartView dibuja un gráfico de barras basado en un array de datos. Cada barra se dibuja con una altura proporcional al valor en el array.
- Conclusión
En esta sección, hemos aprendido a crear vistas personalizadas y a utilizar el objeto Canvas para dibujar gráficos en Android. Este conocimiento te permitirá crear interfaces de usuario únicas y adaptadas a las necesidades específicas de tu aplicación. En el próximo módulo, exploraremos cómo trabajar con tareas en segundo plano para mejorar el rendimiento y la experiencia del usuario en tu aplicación Android.
Curso de Android Studio
Módulo 1: Introducción a Android Studio
- Introducción a Android Studio
- Configuración de Android Studio
- Entendiendo la interfaz de Android Studio
- Creando tu primer proyecto Android
Módulo 2: Desarrollo básico de Android
- Entendiendo la estructura del proyecto Android
- Introducción a los diseños XML
- Componentes básicos de la interfaz de usuario
- Introducción a las actividades
- Ejecutando tu aplicación en un emulador
Módulo 3: Desarrollo intermedio de Android
- Introducción a los Intents
- Trabajando con Fragmentos
- Manejo de la entrada del usuario
- Usando RecyclerView
- Redes en Android
Módulo 4: Desarrollo avanzado de Android
- Persistencia de datos con SQLite
- Usando Room para la gestión de bases de datos
- Componentes avanzados de la interfaz de usuario
- Vistas personalizadas y Canvas
- Trabajando con tareas en segundo plano
Módulo 5: Desarrollo profesional de Android
- Implementando la arquitectura MVVM
- Inyección de dependencias con Dagger
- Pruebas unitarias y pruebas de interfaz de usuario
- Publicando tu aplicación en Google Play
- Optimización del rendimiento
