Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução A aplicação foi criada com o fim de calcular a média aritmética entre as notas das avaliações A1, A2 e A3 de determinada disciplina devolvendo o conceito final. Consiste em uma única tela contendo seis elementos onde o usuário pode de maneira simples calcular sua média final para uma disciplina, informando as notas obtidas nas avaliações. Os campos para entrada das notas são obrigatórios, sendo assim, se algum campo estiver vazio, o cálculo não será realizado. A aplicação foi desenvolvida a partir da IDE Android Studio utilizando a linguagem de programação Java, que é hoje uma das linguagens mais utilizadas em todo o mundo na criação de aplicações para os mais diversos tipos de dispositivos. Código XML da tela (View): <?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"> <TextView android:id="@+id/averageResult" android:layout_width="166dp" android:layout_height="131dp" android:layout_marginStart="123dp" android:layout_marginTop="62dp" android:layout_marginEnd="122dp" android:layout_marginBottom="32dp" android:gravity="center" android:text="0.0" android:textColor="#808080" android:textSize="96sp" app:layout_constraintBottom_toTopOf="@+id/inputGrade1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/calcButton" android:layout_width="325dp" android:layout_height="48dp" android:layout_marginStart="43dp" android:layout_marginTop="100dp" android:layout_marginEnd="43dp" android:onClick="averageCalculate" android:text="Calcular" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/inputGrade3" /> <Button android:id="@+id/calcButton2" android:layout_width="325dp" android:layout_height="48dp" android:layout_marginStart="43dp" android:layout_marginTop="16dp" android:layout_marginEnd="43dp" android:layout_marginBottom="69dp" android:onClick="resetInputs" android:text="Novo calculo" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/calcButton" /> <EditText android:id="@+id/inputGrade1" android:layout_width="236dp" android:layout_height="48dp" android:layout_marginStart="88dp" android:layout_marginTop="32dp" android:layout_marginEnd="87dp" android:layout_marginBottom="16dp" android:ems="10" android:hint="Nota A1" android:inputType="numberDecimal" app:layout_constraintBottom_toTopOf="@+id/inputGrade2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/averageResult" /> <EditText android:id="@+id/inputGrade2" android:layout_width="236dp" android:layout_height="48dp" android:layout_marginStart="88dp" android:layout_marginTop="16dp" android:layout_marginEnd="87dp" android:layout_marginBottom="16dp" android:ems="10" android:hint="Nota A2" android:inputType="numberDecimal" app:layout_constraintBottom_toTopOf="@+id/inputGrade3" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/inputGrade1" /> <EditText android:id="@+id/inputGrade3" android:layout_width="236dp" android:layout_height="48dp" android:layout_marginStart="88dp" android:layout_marginTop="16dp" android:layout_marginEnd="87dp" android:layout_marginBottom="100dp" android:ems="10" android:hint="Nota A3" android:inputType="numberDecimal" app:layout_constraintBottom_toTopOf="@+id/calcButton" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/inputGrade2" /> </androidx.constraintlayout.widget.ConstraintLayout> Tela da aplicação: Código Java implementado na aplicação: package com.uva.ppdm.averageapplication; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.content.pm.ActivityInfo; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } /** * Contém toda a lógica para o cálculo da média. * @param view */ public void averageCalculate(View view){ TextView textView = findViewById(R.id.averageResult); EditText input1 = findViewById(R.id.inputGrade1); EditText input2 = findViewById(R.id.inputGrade2); EditText input3 = findViewById(R.id.inputGrade3); /** * Se algum campo estiver vazio, o cálculo não é possível, * portanto, mostra uma mensagem de alerta. * Caso contrário, realiza o cálculo normalmente. */ if (isEmpty(input1) || isEmpty(input2) || isEmpty(input3)) { AlertDialog.Builder builder1 = new AlertDialog.Builder(this); builder1.setMessage("Os campos A1, A2 e A3 são obrigatórios."); builder1.setCancelable(true); builder1.setPositiveButton( "OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert11 = builder1.create(); alert11.show(); } else { float a1 = Float.parseFloat(String.valueOf(input1.getText())); float a2 = Float.parseFloat(String.valueOf(input2.getText())); float a3 = Float.parseFloat(String.valueOf(input3.getText())); float calcTemp = (a1 + a2 + a3) / 3; textView.setText(String.valueOf(calcTemp)); if (calcTemp < 6) { textView.setTextColor(Color.parseColor("#FF0000")); } else if (calcTemp >= 6) { textView.setTextColor(Color.parseColor("#008000")); } } } /** * Este método tem como finalidade preparar a view para um novo cálculo * @param view */ public void resetInputs(View view){ TextView textView = findViewById(R.id.averageResult); EditText input1 = findViewById(R.id.inputGrade1); EditText input2 = findViewById(R.id.inputGrade2); EditText input3 = findViewById(R.id.inputGrade3); input1.setText(""); input2.setText(""); input3.setText(""); textView.setText("0.0"); textView.setTextColor(Color.parseColor("#808080")); } /** * Verifica se o elemento está vazio, retornando um valor boleano. * @param etText Elemento a ser verificado.* @return {Boolean} */ private boolean isEmpty(EditText etText) { return etText.getText().toString().trim().length() == 0; } } Conclusão A IDE Android Studio traz recursos que tornam simples o desenvolvimento de aplicativos para dispositivos móveis. Dentre os tantos recursos podemos destacar o fato de poder arrastar os elementos diretamente para o layout de tela, bem como posicioná-los e configurar seus atributos de maneira simples e rápida, o que nos permite ter uma ideia bem fiel de como a aplicação se apresentará para o usuário final. Além disso, podemos testar o comportamento da aplicação a partir da criação de um dispositivo virtual, o que possibilita de forma pratica a descoberta de bugs tanto no comportamento lógico da aplicação quanto no layout da tela. Referências: DEITEL, P. J.; DEITEL, H. M.; DEITEL, A. Android: como programar. Porto Alegre: Bookman, 2015. SICSÚ, Calos Augusto. Desenvolvimento de aplicações mobile e distribuídas. E-Book da disciplina Programação para dispositivos móveis.
Compartilhar