Lezione 3 su Android: I button in Android
In questa terza lezione su Android, vedremo alcuni esempi sull’utilizzo di uno dei componenti più importanti in un interfaccia grafica, ovvero i button.
Attraverso i button, è possibile far interagire un utente con il proprio programma, ad esempio far partire una determinata istruzione, inviare un comando e tanto altro.
Vediamo due esempi nell’utilizzo di questo importante tool per Android.
1° Programma: HelloButton
In questo primo programma, vorremmo scrivere nella schermata dello smartphone, la scritta “Sono stato premuto”, una volta che si preme il button.
Il file XML dell’interfaccia grafica, che viene generato automaticamente:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.hellobutton.MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_alignParentRight="true" android:layout_below="@+id/textView1" android:layout_marginTop="80dp" android:text="Button" /> </RelativeLayout>
Ecco il file MainActivity:
package com.example.hellobutton; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { private TextView view; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); view = (TextView) findViewById(R.id.textView1); button = (Button) findViewById(R.id.button1); action(); } private void action(){ button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { view.setText("Sono stato premuto"); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
Il blocco più importante dell’applicazione è quello che contiene l’azione che si deve fare, una volta che il button è stato premuto:
private void action(){ button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { view.setText("Sono stato premuto"); } }); }
Come si può vedere, viene sfruttata l’interfaccia OnClickListener e quindi viene fatto l’Override sul metodo onClick(View v); in tale metodo, viene scelto di far scrivere nella schermata di Android la scritta “Sono stato premuto”.
2°Programma: HelloButtonName
In questo secondo programma, viene scritto il proprio nome e “Android” ci farà un saluto.
Il file XML dell’interfaccia grafica, che viene generato automaticamente:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.hellobuttonname.MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@android:color/holo_orange_dark" android:text="@string/hello_world" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_alignParentRight="true" android:layout_below="@+id/textView1" android:layout_marginTop="106dp" android:text="Invio" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button1" android:layout_below="@+id/textView1" android:layout_marginTop="37dp" android:ems="10" > <requestFocus /> </EditText> </RelativeLayout>
Ed ecco il codice del MainActivity:
package com.example.hellobuttonname; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { private TextView view; private Button button; private TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); view = (TextView) findViewById(R.id.textView1); text = (TextView) findViewById(R.id.editText1); button = (Button) findViewById(R.id.button1); action(); } private void action(){ button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String name = text.getText().toString(); view.setText("Ciao "+name+" !"); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
Come si può vedere, rispetto al programma precedentemente, si è sfruttato il metodo getText() della classe Text, che permette di recuperare il testo che viene inserito nella schermata dello smartphone.
Conclusione
I button in Android sono molto usati nelle varie applicazione per via della semplicità con cui gli utenti possono controllare un “modello”/”algoritmo”.
Per quanto riguardo i programmatori, i metodi disponibile sono davvero semplici da usare e permette di facilitare la programmazione.