Академический Документы
Профессиональный Документы
Культура Документы
ALUMNO:
MUÑOZ VÁZQUEZ OMAR
Firma de la práctica:
1.- Lo primero que se hace es abrir Android Studio y crear un nuevo proyecto,
elegimos la opción de actividad vacía.
2.- Colocamos un nombre al proyecto en este caso Menú, y el lenguaje será Java,
de igual que la API que elegiremos será: API 15 Android 4.0.3 ya que esta es
compatible con el 100% de los dispositivos.
Activity Menú Principal
3.- Se nos generará un activity principal que será el que utilizaremos como nuestro
menú principal.
Adicional a este activity lo que hacemos es crear 3 nuevos activity para esto, del
lado izquierdo tenemos un ícono con la palabra “app” le damos clic derecho y
luego en New, después buscamos Activity y seleccionamos Empty Activity.
Crearemos 3 nuevas ventanas ya que son las 3 opciones de nuestra aplicación
(“CURP”,” RFC”,” Placas”).
Al crearlas de esta manera también se nos generara él .xml que es el diseño de
las pantallas
4.- Los componentes tendrán las siguientes configuraciones
<?xml version="1.0" encoding="utf-8"?>
<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">
En la propiedad Text ponemos Menú Principal que es lo que mostrara ese espacio
de texto.
<TextView
android:id="@+id/textView"
android:layout_width="220dp"
android:layout_height="79dp"
android:layout_gravity="center_horizontal"
android:text="Menú Principal"
android:textSize="30sp"
android:typeface="normal" />
RadioButton es cada opción que tendrá el menú principal, cada componente tiene
un nombre, posición, alto y ancho y variara de acuerdo a la estética que
querramos darle a nuestra aplicación.
<RadioButton
android:id="@+id/rfc"
android:layout_width="88dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="RFC" />
<RadioButton
android:id="@+id/curp"
android:layout_width="88dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="CURP" />
<RadioButton
android:id="@+id/placas"
android:layout_width="88dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="PLACAS" />
<RadioButton
android:id="@+id/salir"
android:layout_width="88dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="SALIR" />
</RadioGroup>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Este es el termino de nuestro .xml en el lado Text, ahora nos dirigimos a la clase
Menu.java en este espacio será donde vamos a programar todas las acciones y
eventos que van a tener los componentes que hemos colocado anteriormente.
5.- Código de la clase principal del menú.
Estas son las paqueterías que vamos a utilizar en nuestra aplicación.
package com.example.menu;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioButton;
import android.widget.Toast;
Esto para poner una excepción de error al no haber llenado correctamente todos
los campos disponibles.
try {
if (rfc.isChecked()) {
Intent intent = new Intent(view.getContext(), RFC.class);
startActivityForResult(intent, 0);
}
if (curp.isChecked()) {
Intent intent = new Intent(view.getContext(), CURP.class);
startActivityForResult(intent, 0);
}
if (placas.isChecked()) {
Intent intent = new Intent(view.getContext(), Placas.class);
startActivityForResult(intent, 0);
}
Para la condición de salir, primero tendremos que crear una ventana y donde
colocaremos lo siguiente, nos ayudara a salir de la ventana actual y cerrar la
aplicación :
if (salir.isChecked()) {
finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
Cerramos el catch con el mensaje para que el usuario sepa que debe llenar todos
los campos antes de usar un botón.
} catch (Exception e) {
Toast.makeText(this, "Llena los datos", Toast.LENGTH_SHORT).show();
}
}
}
Activity RFC
Para la interfaz se siguió el siguiente procedimiento:
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="407dp"
android:layout_height="703dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.428"
tools:layout_editor_absoluteX="2dp">
Los Edit text los usaremos para Nombre, apellido paterno y materno, tendrá una id,
posición y usaremos “hint” en el texto, esto sirve para poder ahorrar espacio, ya que
podemos poner la instrucción de los datos que se requieren y ya que se escribe
dentro las instrucciones desaparecen y solo se ve lo que el usuario escriba.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingBottom="10dp"
android:text="Mi RFC"
android:textSize="20sp" />
<TextView
android:id="@+id/tInstrucciones"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="20dp"
android:text="Instrucciones: Ingresa la información
solicitada" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="10dp"
android:text="Nombre Completo:"
android:textSize="16sp" />
<EditText
android:id="@+id/cNombre"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:gravity="center"
android:hint="Nombre Completo"
android:inputType="textPersonName"
android:textSize="14sp" />
<EditText
android:id="@+id/cApellidop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:gravity="center"
android:hint="Apellido paterno"
android:inputType="textPersonName"
android:textSize="14sp" />
<EditText
android:id="@+id/cApellidom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:gravity="center"
android:hint="Apellido Materno"
android:inputType="textPersonName"
android:textSize="14sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:text="Fecha de Nacimiento:"
android:textSize="16sp" />
</LinearLayout>
android:textSize="16sp" />
Como mejora de la primera versión de este menú, lo que ahora se hace es por
medio de spinners seleccionar, año, mes y día de nacimiento, por lo que
necesitamos de 3 linearlayout para ahorrar espacio en nuestra pantalla
También ponemos 3 textview una para cada número (año, mes, día) y finalmente
3 spinner que corresponden a los mismos 3 datos solicitados.
<LinearLayout
android:layout_width="381dp"
android:layout_height="29dp"
android:orientation="horizontal">
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Año" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Mes" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Día" />
</LinearLayout>
<LinearLayout
android:layout_width="380dp"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Spinner
android:id="@+id/spinnerAnio"
android:layout_width="118dp"
android:layout_height="match_parent" />
<Spinner
android:id="@+id/spinnerMes"
android:layout_width="129dp"
android:layout_height="wrap_content" />
<Spinner
android:id="@+id/spinnerDia"
android:layout_width="129dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="383dp"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textViewAnio"
android:layout_width="47dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/textViewMes"
android:layout_width="48dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/textViewDia"
android:layout_width="86dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
Cada botón tendrá su propio contenido, orientación y texto a mostrar, solo varia el
comando onClick en donde ponemos los métodos que van a ejecutrar.
Le ponemos el método de borrar onClick para el método que se usará
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:onClick="borrar"
android:text="Borrar" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:onClick="miRFC"
android:text="Mostrar RFC" />
<TextView
android:id="@+id/rfc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingTop="5dp"
android:text="RFC:" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:onClick="atras"
android:text="Volver" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
Declaramos cada uno de los componentes que vamos a utilizar en nuestra clase.
Lo nuevo de aquí son los Spinner, los ArrayList y de igual manera los
ArrayAdapter que utilizaremos.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rfc);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Creamos un for que vaya decrementando en una unidad el año actual 2020, hasta
el número que queramos en este caso 1940, esto para llenar el spinner de años.
Creamos un for que vaya decrementando en una unidad los meses del año del 12
al 1, esto para llenar el spinner de meses.
Por último, creamos un for que vaya decrementando en una unidad los dias de un
mes del 31 al 1, esto para llenar el spinner de días.
Variable destinada a guardar Strings por ejemplo las vocales y consonantes que
se necesitan para un RFC.
String vocal = "";
Anexo de la primer letra del EditText apellido materno y la primer letra del Nombre
pasándolas a mayúscula de igual manera.
TvAnio.setText(SpAnio.getSelectedItem() + "");
TvMes.setText(SpMes.getSelectedItem() + "");
TvDia.setText(SpDia.getSelectedItem() + "");
Anexo de los dos dígitos del año, en este caso se pide en formato de los últimos
dos dígitos, por lo que solamente se concatena este resultado a la variable rfc.
Aquí comprobamos que el mes si tiene solo 1 digito se le anexa un cero al inicio, si
no es de 1 digito no se agrega nada y solo se concatena a la variable rfc.
Después de haber hecho todos los procesos se asigna el texto de la variable rfc a
la etiqueta trfc.
//Se establece el texto de la variable "rfc" al objeto rfc
trfc.setText("RFC:" + rfc);
}catch (Exception e){
Toast.makeText(this, "Llena los datos", Toast.LENGTH_SHORT).show();
}
}
El método borrar lo utilizamos para que todos los editText se borre el contenido y
sea más sencillo consultar otro RFC.
public void borrar(View view) {
cNombre.setText("");
cApellidop.setText("");
cApellidom.setText("");
TvAnio.setText("");
TvMes.setText("");
TvDia.setText("");
trfc.setText("RFC:");
}
De igual manera utilizamos primero un linear layout para aquí poner los
componentes que son los botones y los textos.
<LinearLayout
android:layout_width="413dp"
android:layout_height="732dp"
android:orientation="vertical"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="2dp">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingBottom="10dp"
android:text="Mi CURP"
android:textSize="12sp" />
<TextView
android:id="@+id/tInstrucciones"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="18dp"
android:text="Instrucciones: Ingresa la información solicitada"
android:textSize="12sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="8dp"
android:text="Nombre Completo:"
android:textSize="10sp" />
Los Edit text los usaremos para Nombre, apellido paterno, apellido materno, año,
mes, día tendrá una id, posición y usaremos “hint” en el texto, esto sirve para poder
ahorrar espacio, ya que podemos poner la instrucción de los datos que se requieren
y ya que se escribe dentro las instrucciones desaparecen y solo se ve lo que el
usuario escriba.
<EditText
android:id="@+id/cNombre"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:gravity="center"
android:hint="Nombre Completo"
android:inputType="textPersonName"
android:textSize="12sp" />
<EditText
android:id="@+id/cApellidop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:gravity="center"
android:hint="Apellido paterno"
android:inputType="textPersonName"
android:textSize="12sp" />
<EditText
android:id="@+id/cApellidom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:gravity="center"
android:hint="Apellido Materno"
android:inputType="textPersonName"
android:textSize="12sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="Fecha de Nacimiento:"
android:textSize="10sp" />
Como mejora de la primera versión de este menú, lo que ahora se hace es por
medio de spinners seleccionar, año, mes y día de nacimiento, por lo que
necesitamos de 3 linearlayout para ahorrar espacio en nuestra pantalla
También ponemos 3 textview una para cada número (año, mes, día) y finalmente
3 spinner que corresponden a los mismos 3 datos solicitados.
<LinearLayout
android:layout_width="381dp"
android:layout_height="29dp"
android:orientation="horizontal">
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Año" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Mes" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Día" />
</LinearLayout>
<LinearLayout
android:layout_width="380dp"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Spinner
android:id="@+id/spinnerAnio"
android:layout_width="118dp"
android:layout_height="match_parent" />
<Spinner
android:id="@+id/spinnerMes"
android:layout_width="129dp"
android:layout_height="wrap_content" />
<Spinner
android:id="@+id/spinnerDia"
android:layout_width="129dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="383dp"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textViewAnio"
android:layout_width="47dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/textViewMes"
android:layout_width="48dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/textViewDia"
android:layout_width="86dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="Sexo:"
android:textSize="10sp" />
Colocamos un radio group con dos radiobutton que nos servirá para especificar el
sexo de la persona.
<RadioGroup
android:id="@+id/opciones"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radio_masculino"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:checked="true"
android:text="Masculino"
android:textSize="12sp" />
<RadioButton
android:id="@+id/radio_femenino"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="Femenino"
android:textSize="12sp" />
</RadioGroup>
<TextView
android:id="@+id/textView3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="Seleccione su entidad de nacimiento:"
android:textSize="10sp" />
<Spinner
android:id="@+id/lista"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="" />
<Button
android:layout_width="wrap_content"
android:layout_height="39dp"
android:layout_gravity="center_horizontal"
android:onClick="miCURP"
android:text="Mostrar CURP"
android:textSize="12sp" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="39dp"
android:layout_gravity="center_horizontal"
android:onClick="atras"
android:text="Volver"
android:textSize="12sp" />
Cerramos el linear layout que usaremos
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
Declaramos cada uno de los componentes que vamos a utilizar en nuestra clase.
Lo nuevo de aquí son los Spinner, los ArrayList y de igual manera los
ArrayAdapter que utilizaremos
public class CURP extends AppCompatActivity {
EditText cNombre;
EditText cApellidop;
EditText cApellidom;
TextView tcurp;
private RadioGroup grupo;
private Spinner spinner1;
Spinner SpAnio, SpMes, SpDia;
TextView TvAnio, TvMes, TvDia;
ArrayList arrayListAnio = new ArrayList();
ArrayAdapter Adaptador;
ArrayList arrayListMes = new ArrayList();
ArrayAdapter Adaptador2;
ArrayList arrayListDia = new ArrayList();
ArrayAdapter Adaptador3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_curp);
En el arreglo se coloca cada uno de los estados de Mexico, ya que cada uno
tendrá una clava con la cual se va identificar.
String[] estados = {"AGUASCALIENTES","BAJA CALIFORNIA","BAJA CALIFORNIA
SUR","CAMPECHE","COAHUILA"
,"COLIMA","CHIAPAS","CHIHUAHUA","DISTRITO
FEDERAL","DURANGO","GUANAJUATO","GUERRERO","HIDALGO","JALISCO",
"MÉXICO","MICHOACÁN","MORELOS","NAYARIT","NUEVO
LEÓN","OAXACA","PUEBLA","QUERÉTARO","QUINTANA ROO",
"SAN LUIS
POTOSÍ","SINALOA","SONORA","TABASCO","TAMAULIPAS","TLAXCALA","VERACRUZ","YUCATÁN"
,"ZACATECAS"
,"NACIDO EN EL EXTRANJERO"};
Creamos un for que vaya decrementando en una unidad el año actual 2020, hasta
el número que queramos en este caso 1940, esto para llenar el spinner de años.
Creamos un for que vaya decrementando en una unidad los meses del año del 12
al 1, esto para llenar el spinner de meses.
Por último, creamos un for que vaya decrementando en una unidad los dias de un
mes del 31 al 1, esto para llenar el spinner de días.
Usaremos un String vocal para guardar Strings que se irán necesitando para
conformar el CURP
El String selección es para almacenar lo que se elija del spinner
TvAnio.setText(SpAnio.getSelectedItem() + "");
TvMes.setText(SpMes.getSelectedItem() + "");
TvDia.setText(SpDia.getSelectedItem() + "");
Anexo de los dos dígitos del año, en este caso se pide en formato de los últimos
dos dígitos, por lo que solamente se concatena este resultado a la variable rfc.
Aquí comprobamos que el mes si tiene solo 1 digito se le anexa un cero al inicio, si
no es de 1 digito no se agrega nada y solo se concatena a la variable rfc.
v
curp += "0" + TvDia.getText().toString();
} else {
//Si es falso se agrega a la variable rfc
curp += TvDia.getText().toString();
}
if (grupo.getCheckedRadioButtonId() == R.id.radio_masculino) {
curp += "H";
} else {
curp += "M";
}
Con este for se recorre la cadena del Apellido paterno, en busca de la consonante,
seleccionamos la condición en caso de que la letra del apellido paterno sea Ñ se
v
cambia por una X, si no es Ñ se asigna cualquier otro valor que se haya
encontrado y cumpla con la condición de ser consonante.
for (int i = 1; i < (cApellidop.getText().toString().length() - 1);
i++) {
vocal = cApellidop.getText().toString().substring(i, i +
1).toUpperCase();
if (vocal.equals("Ñ")) {
curp += "X";
} else if (vocal.equals("B") || vocal.equals("C") ||
vocal.equals("D") || vocal.equals("F")
|| vocal.equals("G") || vocal.equals("H") ||
vocal.equals("J") || vocal.equals("K")
|| vocal.equals("L") || vocal.equals("M") ||
vocal.equals("N") || vocal.equals("P")
|| vocal.equals("Q") || vocal.equals("R") ||
vocal.equals("S") || vocal.equals("T")
|| vocal.equals("V") || vocal.equals("W") ||
vocal.equals("X") || vocal.equals("Y")
|| vocal.equals("Z")) {
curp += vocal;
break;
}
}
vocal = cApellidom.getText().toString().substring(i, i +
1).toUpperCase();
if (vocal.equals("Ñ")) {
curp += "X";
} else if (vocal.equals("B") || vocal.equals("C") ||
vocal.equals("D")
|| vocal.equals("F") || vocal.equals("G") ||
vocal.equals("H")
|| vocal.equals("J") || vocal.equals("K") ||
vocal.equals("L")
|| vocal.equals("M") || vocal.equals("N") ||
vocal.equals("P")
|| vocal.equals("Q") || vocal.equals("R") ||
vocal.equals("S")
|| vocal.equals("T") || vocal.equals("V") ||
vocal.equals("W")
|| vocal.equals("X") || vocal.equals("Y") ||
vocal.equals("Z")) {
curp += vocal;
break;
}
}
vocal = cNombre.getText().toString().substring(i, i +
1).toUpperCase();
if (vocal.equals("Ñ")) {
curp += "X";
} else if (vocal.equals("B") || vocal.equals("C") ||
vocal.equals("D")
|| vocal.equals("F") || vocal.equals("G") ||
vocal.equals("H")
|| vocal.equals("J") || vocal.equals("K") ||
vocal.equals("L")
|| vocal.equals("M") || vocal.equals("N") ||
vocal.equals("P")
|| vocal.equals("Q") || vocal.equals("R") ||
vocal.equals("S")
|| vocal.equals("T") || vocal.equals("V") ||
vocal.equals("W")
|| vocal.equals("X") || vocal.equals("Y") ||
vocal.equals("Z")) {
curp += vocal;
break;
}
}
Método borrar para que cada componente se limpie para otra consulta.
public void borrar(View view) {
cNombre.setText("");
cApellidop.setText("");
cApellidom.setText("");
TvAnio.setText("");
TvMes.setText("");
TvDia.setText("");
tcurp.setText("CURP:");
}
Utilizamos un linear layout que se usara para colocar todos los componentes.
<LinearLayout
android:layout_width="407dp"
android:layout_height="628dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
tools:layout_editor_absoluteX="0dp">
<TextView
android:id="@+id/tInstrucciones"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="18dp"
android:text="Instrucciones: Ingresa la información solicitada" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="8dp"
android:text="Nombre Completo:"
android:textSize="14sp" />
Los Edit text los usaremos para Nombre, apellido paterno, apellido materno, año,
mes, día tendrá una id, posición y usaremos “hint” en el texto, esto sirve para poder
ahorrar espacio, ya que podemos poner la instrucción de los datos que se requieren
y ya que se escribe dentro las instrucciones desaparecen y solo se ve lo que el
usuario escriba.
<EditText
android:id="@+id/cNombre"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:gravity="center"
android:hint="Nombre Completo"
android:inputType="textPersonName"
android:textSize="12sp" />
<EditText
android:id="@+id/cApellidop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:gravity="center"
android:hint="Apellido paterno"
android:inputType="textPersonName"
android:textSize="12sp" />
<EditText
android:id="@+id/cApellidom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:gravity="center"
android:hint="Apellido Materno"
android:inputType="textPersonName"
android:textSize="10sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="Datos del automóvil:"
android:textSize="10sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="Año o modelo del Automóvil:"
android:textSize="10sp" />
Aquí se declara el spinner que será utilizado para poner los años de los modelos del
automóvil.
<Spinner
android:id="@+id/spinnerAnio"
android:layout_width="220dp"
android:layout_height="wrap_content"
android:layout_gravity="center" />
<TextView
android:id="@+id/textViewAnio"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="Marca del Auto:"
android:textSize="10sp" />
Aquí se declara el spinner que será utilizado para poner las marcas de los modelos
famosos de automóviles.
<Spinner
android:id="@+id/spinnerMarca"
android:layout_width="220dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="" />
<TextView
android:id="@+id/textViewMarca"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="Lugar de Registro:"
android:textSize="10sp" />
RadioGroup que de acuerdo al OptionButton que sea seleccionado nos dirá si fue
registrado en el Estado de México o en la Ciudad de México.
<RadioGroup
android:id="@+id/opciones"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<RadioButton
android:id="@+id/edo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Estado de México" />
<RadioButton
android:id="@+id/cdmx"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="Ciudad de México" />
</RadioGroup>
<TextView
android:id="@+id/placas"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingTop="5dp"
android:text="Placa:" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.menu;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
Se declara cada variable a utilizar, con las mejoras de los Spinners.
EditText cNombre;
EditText cApellidop;
EditText cApellidom;
EditText cMarca;
TextView tplacas;
private RadioGroup grupo;
Spinner SpAnio;
TextView TvAnio;
ArrayList arrayListAnio = new ArrayList();
ArrayAdapter Adaptador;
private Spinner SpMarca;
TextView TvMarca;
Se declara un arreglo donde se ponen las marcas mas famosas de autos, que se
usaran para poder obtener la placa.
String[] marcas = {"Kia","Lamborghini","Ferrari","Audi","Mercedes Benz"
,"Porsche","Toyota","Honda","Bugatti","Volkswagen","Ford","Aston
Martin","Maserati","Jaguar",
"Rolls
Royce","Chevrolet","Nissan","Bentley","Volvo","Mclaren","Lexus","Mazda","Cadillac
",
"Land
Rover","Mitsubishi","Mini","Renault","Hyundai","Jeep","Peugeot","Pagani","Dodge"
,"Hummer","Acura","Alfa
Romeo","Subaru","Shelby","Koenigsegg","Seat","Lotus","Suzuki",
"Citroen","Fiat","Opel","Chrysler","Daewoo","Lincoln","Skoda","Pontiac","Saleen",
"Isuzu",
"Buick","Chery","Ssan
Yong","Plymouth","Delorean","Mercury","Saturn"};
Creamos un for que vaya decrementando en una unidad el año actual 2020, hasta
el número que queramos en este caso 1940, esto para llenar el spinner de años.
Se hace uso de un ciclo for para recorrer la cadena del nombre, como en el caso
del CURP y RFC, pero adicionalmente en este proceso de las placas, necesitamos
la segunda consonante y no la primera.
if(nconsonante==2){
letras += con1;
break;
}
}
}
Se hace uso de un ciclo for para recorrer la cadena del apellido paterno, como en
el caso del CURP y RFC, pero adicionalmente en este proceso de las placas,
necesitamos la segunda vocal y no la primera.
if(nvocal==2){
letras += vocal;
break;
}
}
}
Ultima consonante, se recorre el String al revés, ya que ahora se necesita la ultima
consonante, el for va en decremento por eso el i - -
letras+=con1;
break;
}
}
Se suman los dígitos del año para obtener los últimos dos dígitos.
Lo que se hace es obtener el año completo, se va partiendo con ayuda de ir
sacando el módulo de 10, y dividir el numero entre 10, para ir obteniendo cada
digito.
TvAnio.setText(SpAnio.getSelectedItem() + "");
//Suma de los dos ultimos digitos del año
int año=0;
int numero;
numero=Integer.parseInt(TvAnio.getText().toString());
while(numero > 0) {
año += numero % 10;
numero = numero / 10;
}
if(año<=9) {
numeros += "0" + año;
}else{
numeros+=año;
}
Si se elige Estado de México primero debe empezar por las letras y después los
números.
if (grupo.getCheckedRadioButtonId() == R.id.cdmx) {
placa += numeros+letras;
} if (grupo.getCheckedRadioButtonId() == R.id.edo) {
placa += letras+numeros;
}