• +34 685 967 885
  • +34 695 898 191
  • antgarprats@gmail.com
  • Antonio García Prats

curriculum digital con kotlin

Curriculum en una app

Mi propósito en el día de hoy será el de crear una aplicación para dispositivos móviles android que muestre un curriculum en una app escrita con el lenguaje de programación Kotlin. Es una forma original de llevarlo en tu teléfono móvil.

Cómo diseñar una app Android y publicarla

1. Diseño de la app:

– Define el propósito de la app (en este caso, un currículum personalizable).

a. Esquematiza las pantallas necesarias, como:

I. Pantalla principal: Información personal y profesional.

II. Secciones: Educación, experiencia laboral, habilidades, proyectos, etc

b. Diseña una interfaz moderna utilizando principios de Material Design para garantizar una experiencia de usuario profesional.

2. Herramientas necesarias:

Android Studio: IDE recomendado para desarrollo Android.

Kotlin: Lenguaje oficial para Android.

– Diseño visual: Utiliza herramientas como Figma para planificar la interfaz.

– Recursos visuales: Asegúrate de usar imágenes e íconos de alta calidad.

3. Publicación de la app:

– Regístrate como desarrollador en Google Play Console.

– Crea un paquete de la app en formato APK o AAB.

– Completa los detalles de la app, como título, descripción y capturas de pantalla.

– Sube la app a Google Play Store tras pasar la revisión.

Código Fuente: Aplicación de Currículum en Kotlin

Estructura del Proyecto

La app incluye:

– Pantalla principal con datos personales.

– Secciones desplegables para educación, experiencia, habilidades, etc.

– Diseño adaptativo para diferentes tamaños de pantalla.

Código Completo

1. Archivo build.gradle (Nivel App)

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

android {
    compileSdk 34

    defaultConfig {
        applicationId "com.example.curriculumapp"
        minSdk 21
        targetSdk 34
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation "androidx.core:core-ktx:1.12.0"
    implementation "androidx.appcompat:appcompat:1.6.1"
    implementation "com.google.android.material:material:1.10.0"
    implementation "androidx.constraintlayout:constraintlayout:2.1.4"
}

2. Layout Principal (activity_main.xml)

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ScrollView
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="16dp">

            <!-- Header Section -->
            <TextView
                android:id="@+id/tvName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Tu Nombre"
                android:textSize="24sp"
                android:textStyle="bold"
                android:gravity="center" />

            <TextView
                android:id="@+id/tvTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Título Profesional"
                android:textSize="18sp"
                android:gravity="center"
                android:paddingTop="4dp" />

            <!-- Section: Education -->
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Educación"
                android:textStyle="bold"
                android:textSize="20sp"
                android:paddingTop="16dp" />

            <TextView
                android:id="@+id/tvEducation"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Universidad X, Licenciatura en Y, Año Z"
                android:paddingTop="8dp" />

            <!-- Section: Experience -->
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Experiencia"
                android:textStyle="bold"
                android:textSize="20sp"
                android:paddingTop="16dp" />

            <TextView
                android:id="@+id/tvExperience"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Empresa A, Puesto B, Año C"
                android:paddingTop="8dp" />

            <!-- Section: Skills -->
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Habilidades"
                android:textStyle="bold"
                android:textSize="20sp"
                android:paddingTop="16dp" />

            <TextView
                android:id="@+id/tvSkills"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Habilidad 1, Habilidad 2, Habilidad 3"
                android:paddingTop="8dp" />
        </LinearLayout>
    </ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

3. Actividad Principal (MainActivity.kt)

package com.example.curriculumapp

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Personaliza los textos según las preferencias del usuario
        findViewById<TextView>(R.id.tvName).text = "Juan Pérez"
        findViewById<TextView>(R.id.tvTitle).text = "Ingeniero de Software"
        findViewById<TextView>(R.id.tvEducation).text = "Universidad Nacional, Ingeniería en Computación, 2023"
        findViewById<TextView>(R.id.tvExperience).text = "Empresa ABC, Desarrollador Android, 2020-2023"
        findViewById<TextView>(R.id.tvSkills).text = "Kotlin, Java, SQL, Diseño UI/UX"
    }
}

4. Personalización de Icono y Publicación

Reemplaza el ícono predeterminado en la carpeta res/drawable con uno personalizado usando Android Asset Studio.

Sigue los pasos descritos en la sección «Publicación de la app» para subir tu APK a Google Play.

Explicación del Código

Estructura del proyecto:

build.gradle: Configura las dependencias y características del proyecto.

activity_main.xml: Define la interfaz gráfica de la app.

MainActivity.kt: Maneja la lógica de la aplicación, como asignar datos a la interfaz.

Principales Componentes:

ConstraintLayout: Permite diseñar interfaces complejas y adaptables.

ScrollView: Habilita el desplazamiento en dispositivos pequeños.

TextView: Se usa para mostrar textos estáticos y dinámicos.

Personalización: Los textos pueden ser personalizados desde MainActivity.kt, haciendo que la app sea reutilizable.

Publicación: Después de generar el APK, sigue las instrucciones de Google Play Console para distribuir tu app.

Con este proyecto, cualquier persona puede crear y personalizar su propio currículum digital y compartirlo profesionalmente.


Si tienes dudas o quieres crear tu propia app para tu negocio o cualquier necesidad que tengas, no dudes en contactar conmigo y haré realidad tu proyecto.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *