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
(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...