Ciao a tutti cari amici di iProg e ben tornati ad un nuovo tutorial riguardante la programmazione di applicazioni Android. In questo tutorial vi mostrerò come creare una calcolatrice molto rudimentale, ma nello stesso tempo ottimale per il nostro scopo, ovvero esplorare le potenzialità della piattaforma Android. Per prima cosa creiamo un nuovo progetto come vi ho mostrato l’ultima volta e diamogli il nome di Calcolatrice, per il resto lasciamo tutto uguale. La prima cosa che faremo è creare l’interfaccia grafica, essa è molto basilare infatti è composta solamente da 4 bottoni per le 4 operazioni fondamentali e 2 campi di testo, il tutto avrà il seguente aspetto:
Per creare la seguente interfaccia potete copiare il seguente codice all’interno del file .xml
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText1" android:layout_margin="10dp" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText2" android:layout_margin="10dp" /> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="5dp"> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:text="+" android:id="@+id/buttonPiu" android:layout_margin="3dp" android:layout_gravity="center_horizontal" android:layout_weight="1" /> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:text="-" android:id="@+id/buttonMeno" android:layout_margin="3dp" android:layout_gravity="center_horizontal" android:layout_weight="1" /> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:text="/" android:id="@+id/buttonDiviso" android:layout_margin="3dp" android:layout_gravity="center_horizontal" android:layout_weight="1" /> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:text="*" android:id="@+id/buttonPer" android:layout_margin="3dp" android:layout_gravity="center_horizontal|right" android:layout_weight="1" /> </TableRow> </LinearLayout>
Una volta impostata l’interfaccia grafica passiamo all’implementazione del codice, quindi rechiamoci presso il file MyActivity.java:
import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import java.lang.Float; public class MyActivity extends ActionBarActivity implements View.OnClickListener { //Dichiarazioni EditText textUno; EditText tetNumDue; Button bPiu; Button bPer; Button bDiviso; Button bMeno; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); //Setto il tutto textUno=(EditText)findViewById(R.id.editText1); tetNumDue=(EditText)findViewById(R.id.editText2); bPiu =(Button)findViewById(R.id.buttonPiu); bPer =(Button)findViewById(R.id.buttonPer); bDiviso=(Button)findViewById(R.id.buttonDiviso); bMeno =(Button)findViewById(R.id.buttonMeno); bPiu.setOnClickListener(this); bPer.setOnClickListener(this); bDiviso.setOnClickListener(this); bMeno.setOnClickListener(this); } //implemento il metodo onCick dell'interfaccia OnClickListener public void onClick(View v) { //Creo un oggetto number che conterrà il risultato delle nostre operazioni Number risultato = 0; //Lo switch ci consente di determinare quale bottone è stato premuto switch (v.getId()) { case R.id.buttonPiu: try { risultato= Float.parseFloat(textUno.getText().toString())+Float.parseFloat(tetNumDue.getText().toString()); } catch (Exception e){ //un Toast è una sorta di pop up che ci consente di mostrare un messaggio momentaneo sul display Toast.makeText(this,"Operazione non valida", Toast.LENGTH_LONG).show(); //pulisco i campi di testo textUno.setText(""); tetNumDue.setText(""); } break; case R.id.buttonMeno: try { risultato = Float.parseFloat(textUno.getText().toString()) - Float.parseFloat(tetNumDue.getText().toString()); } catch (Exception e){ //un Toast è una sorta di pop up che ci consente di mostrare un messaggio momentaneo sul display Toast.makeText(this,"Operazione non valida", Toast.LENGTH_LONG).show(); //pulisco i campi di testo textUno.setText(""); tetNumDue.setText(""); } break; case R.id.buttonPer: try { risultato = Float.parseFloat(textUno.getText().toString()) * Float.parseFloat(tetNumDue.getText().toString()); } catch (Exception e){ //un Toast è una sorta di pop up che ci consente di mostrare un messaggio momentaneo sul display Toast.makeText(this,"Operazione non valida", Toast.LENGTH_LONG).show(); //pulisco i campi di testo textUno.setText(""); tetNumDue.setText(""); } break; case R.id.buttonDiviso: try { risultato = Float.parseFloat(textUno.getText().toString()) / Float.parseFloat(tetNumDue.getText().toString()); } catch (Exception e){ //un Toast è una sorta di pop up che ci consente di mostrare un messaggio momentaneo sul display Toast.makeText(this,"Operazione non valida", Toast.LENGTH_LONG).show(); //pulisco i campi di testo textUno.setText(""); tetNumDue.setText(""); } break; default: break; } //un Toast è una sorta di pop up che ci consente di mostrare un messaggio momentaneo sul display Toast.makeText(this, (CharSequence) risultato.toString(), Toast.LENGTH_LONG).show(); //pulisco i campi di testo textUno.setText(""); tetNumDue.setText(""); } //------ Codice di default
Utilizzare un oggetto Toast per visualizzare il risultato della nostra calcolatrice non è la scelta migliore poichè magari se si preme più volte un pulsante potrebbero sovrapporsi gli output, ma ho deciso di fare ciò per introdurvi un nuovo oggetto che potete utilizzare nelle vostre applicazioni.