Android04 – Gestione eventi

Transcript

Android04 – Gestione eventi
Android
Android04: Gestione eventi
[email protected]
Gestione eventi
In contrapposizione alle interfacce testuali, dove l'utente
interagisce solamente con la tastiera, nelle interfacce
grafiche l'utente interagisce con il mouse o con il tocco dello
schermo del dispositivo.
Tale interazione avviene grazie ad un sistema di gestione
degli eventi.
Viene impostato un ascoltatore (listener) sulle interazioni
che interessa rilevare e quando l'interazione avviene, è
generato un evento, intercettato dal sistema e gestito.
L'evento onClick
L'evento onClick (1)
In android l'evento onClick viene generato quando premiamo e
solleviamo il dito su una View. Ci sono diversi modi per gestire questo
evento.
Metodo A:
Si utilizza una classe interna e anonima istanziando l'interfaccia
onClickListener e implementando il suo metodo onClick()
Button button1;
button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
// operazioni da fare su click
}
});
L'evento onClick (2)
Metodo B:
Utilizzo una classe interna che gestisce i Click di tutti i pulsanti presenti
nella activity.
1. Creo i pulsanti e associo come listener ad un gestore generico:
Button button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(gestore);
Button button2=(Button)findViewById(R.id.button2);
button2.setOnClickListener(gestore);
L'evento onClick (3)
2. Creo l'oggetto gestore di tipo interfaccia OnClickListener e
implemento il metodo onClick. La view passata è l'elemento che ho
premuto e mediante il metodo getId() recupero il suo codice e con uno
switch so chi ha generato l'evento.
private OnClickListener gestore = new OnClickListener() {
public void onClick(View v) {
switch(v.getId()){
case R.id.button1:
// operazioni da effettuare
break;
case R.id.button2:
...
}
}
};
L'evento onClick (4)
Metodo C:
Utilizzo l'interfaccia OnClickListener.
1. Implemento l'interfaccia OnClickListener nell'activity
public class MainActivity extends Activity
implements OnClickListener{...
2. Associo la gestione dell'evento click dei pulsanti alla activity stessa,
usando this.
button1=(Button) findViewById(R.id.button1);
button1.setOnClickListener(this);
button2=(Button) findViewById(R.id.button2);
button2.setOnClickListener(this);
L'evento onClick (5)
3. Inserisco nel corpo della activity il metodo onClick() dell'interfaccia.
public void onClick(View v) {
switch(v.getId()){
case R.id.button1:
// operazioni da effettuare
break;
case R.id.button2:
...
}
}
L'evento onClick (6)
Metodo D:
Utilizzo dell'attributo xml onClick.
1. Nel xml del layout indico nella proprietà onClick il nome di una
funzione che gestirà l'evento.
android:onClick="gestisciClick"
2. Creo nel corpo della activity un metodo void pubblico con lo stesso
nome indicato nel punto precedente e che riceve come unico parametro
una View.
public void gestisciClick(View v){
switch(v.getId()){
...
}
}
Esercizio OnClick
Creare una Activity con due pulsanti e una TextView.
I due pulsanti dovranno visualizzare due differenti messaggi nella
TextView.
Gestire l'evento onClick con tutti i quattro metodi visti in
precendenza. Dare ai progetti i seguenti nomi:
OnClickMetodoA
OnClickMetodoB
OnClickMetodoC
OnClickMetodoD
L'evento onLongClick
L'evento onLongClick (1)
L'evento onLongClick viene generato quando si mantiene la pressione su
una View per qualche secondo.
Può essere gestito in uno dei metodi visti in precedenza. L'unica
differenza è che l'interfaccia usata è OnLongClickListener, che
implementa il metodo OnLongClick per gestire l'evento.
button1=(Button) findViewById(R.id.button1);
button1.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View v) {
// cose da fare
return false;
}
});
L'evento onLongClick (2)
Il metodo onLongClick riceve come parametro la View che ha scatenato
l'evento. Con il metodo View.getId() si recupera il codice della View.
onLongClick ritorna un valore boolean:
public boolean onLongClick(View v) {
// cose da fare
return false;
}
Ritorniamo true se il gestore ha risolto l'evento, altrimenti false.
(false fa scattare in seguito l'evento onClick, true evita che tale evento
parta).
L’evento OnSeekBarChangeListener
L’evento OnSeekBarChangeListener (1)
L’evento OnSeekBarChangeListener risponde al movimento di una
SeekBar.
seek1=findViewById(R.id.seek1);
seek1.setOnSeekBarChangeListener(
new OnSeekBarChangeListener() {
// metodi da implementare
}
L'interfaccia OnSeekBarChangeListener (2)
Si possono implementare i metodi onStartTrackingTouch (a inizio
modifica), onStopTrackingTouch (a fine modifica) e
onProgressChanged (su modifica della barra).
public void onStopTrackingTouch(SeekBar seekBar)
{ // gestione evento
}
public void onStartTrackingTouch(SeekBar seekBar)
{ // gestione evento
}
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser)
{ // gestione evento
}
L'evento onTextChanged
L'evento onTextChanged (1)
Gestiamo l'evento onTextChanged quando vogliamo controllare una
EditText mentre l'utente inserisce i dati.
Si utilizza il metodo addTextChangedListener per impostare un listener
sulla EditView e si implementa la interfaccia TextWatcher.
edit1=(EditText) findViewById(R.id.edit1);
edit1.addTextChangedListener(new TextWatcher() {
// metodi da implementare
});
L'evento onTextChanged (2)
Si possono implementare i metodi onTextChanged (su cambiamento),
beforeTextChanged (prima del cambiamento) e afterTextChanged
(dopo il cambiamento).
public void onTextChanged(CharSequence s, int start, int before, int
count) {
// gestione evento
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after)
{ // gestione evento
}
public void afterTextChanged(Editable s)
{ // gestione evento
}

Documenti analoghi

Corso di Programmazione

Corso di Programmazione (non si perde e non si vince) Se le carte sono tutte dello stesso valore si vince il doppio della posta Se le carte sono tutte dello stesso valore e dello stesso seme si vince il quadruplo della po...

Dettagli