¿Cómo crear una aplicación de calculadora de gastos simple en Android?

Requisitos previos:

Una sencilla calculadora de gastos le permite agregar ingresos y gastos de manera simplificada. Este es un vistazo de la aplicación que vamos a construir. La aplicación contiene una sola actividad con un RecyclerView, dos EditText (uno para ingresar el monto y el otro para ingresar una nota breve de la transacción), 1 TextView en el que se puede hacer clic para especificar la pérdida o la ganancia, 1 imagen en la que se puede hacer clic para agregar la transacción a RecyclerView, y finalmente una ActionBar personalizada para mostrar el saldo. Incluye Preferencias Compartidas para almacenar los datos localmente. A continuación se muestra un video de muestra para tener una idea de lo que vamos a hacer en este artículo. Tenga en cuenta que vamos a implementar este proyecto utilizando el lenguaje Java

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2:

Antes de pasar a la sección de codificación, agreguemos las dependencias necesarias. La única dependencia que tenemos que agregar para el proyecto es para Gson . Es una biblioteca Java que se puede usar para convertir objetos Java en su representación JSON. También se puede usar para convertir una string JSON en un objeto Java equivalente. Vaya al archivo build.gradle del nivel de la aplicación , agregue la siguiente dependencia y haga clic en sincronizar ahora.

implementation 'com.google.code.gson:gson:2.8.6'

Aquí hay una referencia,

Paso 3:

Agreguemos los activos vectoriales necesarios y los archivos de recursos dibujables. Vaya a app > res > drawable y agregue los siguientes archivos xml. 

ic_delete.xml (Eliminar icono)

XML

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24"
    android:tint="?attr/colorControlNormal">
  <path
      android:fillColor="@android:color/white"
      android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
</vector>

Avance:

ic_send.xml (Icono de envío)

XML

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24"
    android:tint="?attr/colorPrimarySurface"
    android:autoMirrored="true">
  <path
      android:fillColor="@color/white"
      android:pathData="M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z"/>
</vector>

Avance:

ic_balance.xml (icono de billetera)

XML

<vector android:height="24dp" android:tint="#FFFFFF"
    android:viewportHeight="24" android:viewportWidth="24"
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="@android:color/white" android:pathData="M21,18v1c0,1.1 -0.9,2 -2,2L5,21c-1.11,0 -2,-0.9 -2,-2L3,5c0,-1.1 0.89,-2 2,-2h14c1.1,0 2,0.9 2,2v1h-9c-1.11,0 -2,0.9 -2,2v8c0,1.1 0.89,2 2,2h9zM12,16h10L22,8L12,8v8zM16,13.5c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5z"/>
</vector>

Avance:

etbg.xml (Selector para editar texto)

XML

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_focused="false">
      <shape android:shape="rectangle">
          <corners android:radius="3dp"/>
          <stroke android:color="#DDD" android:width="2dp"/>
      </shape>
  </item>
    <item android:state_focused="true">
        <shape android:shape="rectangle">
            <corners android:radius="3dp"/>
            <stroke android:color="@color/purple_500" android:width="2dp"/>
        </shape>
    </item>
</selector>

Aquí hay una captura de pantalla como referencia.

Paso 4:

Ahora agreguemos archivos de recursos de diseño para el diseño de fila personalizado de ActionBar y RecyclerView. Vaya a aplicación > res > diseño y agregue los siguientes archivos xml. barra_de_acción_personalizada .xml

XML

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/purple_500"
    android:gravity="center_vertical"
    android:paddingStart="5dp"
    android:paddingTop="10dp"
    android:paddingEnd="5dp"
    android:paddingBottom="10dp">
  
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginEnd="10dp"
        android:text="Expense Calculator"
        android:textColor="@color/white"
        android:textSize="20sp"
        android:textStyle="bold" />
  
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginStart="10dp"
        android:layout_marginEnd="10dp"
        app:srcCompat="@drawable/ic_balance" />
  
    <TextView
        android:id="@+id/tvBalance"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="start"
        android:text="0.00"
        android:textColor="@color/white"
        android:textSize="20sp" />
    
</LinearLayout>

Avance:

transaction_row_layout .xml (RecyclerView Row Layout)

XML

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 
    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="wrap_content"
    app:cardBackgroundColor="#000000"
    app:cardUseCompatPadding="true">
  
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white"
        android:orientation="horizontal"
        android:padding="5dp">
  
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:orientation="vertical">
  
            <TextView
                android:id="@+id/tvAmount"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Amount"
                android:textColor="@color/black"
                android:textSize="24sp"
                android:textStyle="bold" />
  
            <TextView
                android:id="@+id/tvMessage"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Message"
                android:textColor="@color/black" />
  
        </LinearLayout>
  
        <ImageView
            android:id="@+id/ivDelete"
            android:layout_width="0dp"
            android:layout_height="32dp"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:clickable="true"
            app:srcCompat="@drawable/ic_delete"
            tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" />
    </LinearLayout>
  
  
</androidx.cardview.widget.CardView>

Avance:

Aquí hay una captura de pantalla como referencia.

Paso 5:

Hemos agregado los archivos de recursos necesarios para la aplicación que estamos construyendo. Ahora, diseñemos la interfaz de usuario para nuestra aplicación. Agregue este archivo xml a la aplicación> res> diseño. A continuación se muestra el código para el archivo  activity_main.xml .

 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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