ASIGNATURA
Introducción al Desarrollo de Aplicaciones Móviles
PROFESOR
Freidy Nuñez Pérez
TITULO DE LA TAREA
Tarea tema 2.
NOMBRE COMPLETO
Cristal Ashiell Lantigua Guerrero
MATRICULA
2022-0024
PERIODO
2024-C-1
Crear una aplicación con una imagen del de la institución como logo en el medio. Que
al presionar botón de volumen para arriba me calcule de una cantidad entera cuantos
billetes de 100, 50, 20 tiene y moneda de 5 y 10 centavos tienes y me los muestre en un
textview.
• A mitad de la pantalla para abajo que para salir de la aplicación debo hacer un
swipe de izqueirda a derecha, de derecha a izquierda para poder limpiar el
contenido del el edittext y textview.
• En la parte superior deben aparecerme una zona que me permita cambiar el color
de fondo de la pantalla usando degradado de colores, es decir de arriba hacia
bajo o de abajo hacia arriba entre blanco y negro y los colores en medio de
blanco y negro
• En la aplicación se me debe indicar en que zonas debo dar swipe para cerrar o
para limpiar
• Deben tener en cuenta que si la pantalla está en vertical debe funcionar y si está
en horizontal también la parte del swipe en la pantalla completa
• Todo el cálculo atreves de las teclas del dispositivo en el ediText, no usar
botones en el diseño.
XML:
<?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">
<LinearLayout
android:id="@+id/layoutLinea"
android:layout_width="413dp"
android:layout_height="217dp"
android:layout_marginTop="44dp"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<View
android:id="@+id/color1"
android:layout_width="467dp"
android:layout_height="44dp"
android:background="@drawable/beige"
android:clickable="true"
android:contentDescription="Color: Beige" />
<View
android:id="@+id/color2"
android:layout_width="match_parent"
android:layout_height="51dp"
android:background="@drawable/grisclaro"
android:clickable="true"
android:contentDescription="Color: Gris Claro"/>
<View
android:id="@+id/color3"
android:layout_width="match_parent"
android:layout_height="61dp"
android:background="@drawable/gris"
android:clickable="true"
android:contentDescription="Color: Gris"/>
<View
android:id="@+id/color4"
android:layout_width="match_parent"
android:layout_height="57dp"
android:background="@drawable/negro"
android:clickable="true"
android:contentDescription="Color: Negro"/>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="412dp"
android:layout_height="279dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/layoutLinea"
app:layout_constraintVertical_bias="0.579">
<ImageView
android:id="@+id/imageLogo"
android:layout_width="179dp"
android:layout_height="240dp"
android:src="@drawable/logo_itla"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textInfo"
android:layout_width="match_parent"
android:layout_height="149dp"
android:layout_above="@+id/swText"
android:layout_marginBottom="2dp"
android:gravity="center"
android:text="Ingrese una cantidad:"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<EditText
android:id="@+id/swText"
android:layout_width="228dp"
android:layout_height="66dp"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="5dp"
android:layout_marginEnd="0dp"
android:layout_marginBottom="62dp"
android:ems="10" />
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/LayoutSwipe"
android:layout_width="416dp"
android:layout_height="185dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout3">
<TextView
android:id="@+id/swipeLeftView"
android:layout_width="match_parent"
android:layout_height="88dp"
android:text="Cerrar---------------**"
android:gravity="center"/>
<TextView
android:id="@+id/swipeRightView"
android:layout_width="match_parent"
android:layout_height="106dp"
android:text="**--------------------Limpiar"
android:gravity="center"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Swipes:
package com.example.tarea2;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
public class Swipes implements View.OnTouchListener {
private final GestureDetector gestureDetector;
public Swipes(Context context){gestureDetector = new
GestureDetector(context,
new GestureListener());}
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event){
return gestureDetector.onTouchEvent(event);
}
private final class GestureListener extends
GestureDetector.SimpleOnGestureListener{
private static final int SWIPE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;
@Override
public boolean onDown(MotionEvent i){
return true;}
@Override
public boolean onSingleTapConfirmed(MotionEvent i) {
onClick();
return super.onSingleTapConfirmed(i);}
@Override
public boolean onDoubleTap(MotionEvent i) {
onDoubleClick();
return super.onDoubleTap(i);}
@Override
public boolean onFling(MotionEvent i1, MotionEvent i2, float
velocityX, float
velocityY) {
boolean resp = false;
float difY =i2.getY()-i1.getY();
float difX =i2.getX()-i1.getX();
if (Math.abs(difX)>Math.abs(difY)){
if(Math.abs(difX)>SWIPE_THRESHOLD &&
Math.abs(velocityX)>SWIPE_VELOCITY_THRESHOLD){
if(difX>0){
resp = onSwipeRight();
}else{
resp = onSwipeLeft();
}
}
}else {
if (Math.abs(difY) > SWIPE_THRESHOLD&&
Math.abs(velocityY)>SWIPE_VELOCITY_THRESHOLD){
if (difY >0) {
resp = onSwipeBottom();
}else{
resp = onSwipeTop();
}
}
}
return resp;
}
}
public void onClick(){
}
public void onDoubleClick(){
}
public boolean onSwipeRight() { return false; }
public boolean onSwipeLeft() { return false; }
public boolean onSwipeTop() { return false; }
public boolean onSwipeBottom() { return false; }
}
Java:
package com.example.tarea2;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.view.KeyEvent;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private EditText swText;
private TextView textInfo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
swText = findViewById(R.id.swText);
textInfo = findViewById(R.id.textInfo);
swText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP &&
event.getAction() ==
KeyEvent.ACTION_UP) {
int currentAmount =
Integer.parseInt(swText.getText().toString());
calculate(currentAmount);
return true;
}
return false;
}
});
}
private void calculate(int amnt) {
int billete100 = amnt / 100;
int billete50 = amnt / 50;
int billete20 = amnt / 20;
int moneda10 = amnt / 10;
int moneda5 = amnt / 5;
String resp = "Billetes de 100: " + billete100 +
"\nBilletes de 50: " + billete50 +
"\nBilletes de 20: " + billete20 +
"\nMonedas de 10: " + moneda10 +
"\nMonedas de 5: " + moneda5;
textInfo.setText(resp);
}
}