Lezione 3 su Android: I button in Android

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.

simple-android-button-clicked

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:

HelloButtonXML

<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:

  • View: testo
  • View: dove viene inserito il nome
  • Button: il comando che serve per stampare il saluto
  • HelloButtonNameXML
<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.

ismanettoneblog