O evento onLongClick
Ir a la navegación
Ir a la búsqueda
Introdución
Para continuar coa xestión de eventos imos ver como xestionar un click longo.
onLongClick()
- Cando sobre unha vista se preme por duración de 1 segundo ou máis lánzase o evento LongClick que é capturado polo método onLongClick() asociado ao correspondente interface.
- O método onLongClick() devolve un booleano para poder comprobar se o evento se consumou ou non. Se chegamos a premer por un segundo (ou máis) ou non.
- Devolve true se puidemos capturar o evento e xa non fai nada máis.
- Devolve false se non se puido capturar o evento e continua chamando a outros escoitadores tipo on-Click.
Caso Práctico
- Comezamos creando o proxecto U3_03_OnLongClick
- Esta actividade ten 2 vistas:
- Un botón que se pode facer Click (usando a propiade do XML) e LongClick (capturado a través dun Listener)
- Unha etiqueta de texto (en 2 liñas) na que se pode facer Click (hai que habilitalo) e LongClick. Neste último caso os dous eventos captúranse con cadanseu Listener.
XML do Layout
- Observar a Liña 20 onde se habilita o TextView para sexa clickable.
- Agora poderíase engadir ao compoñente a propiedade: android:onClick="onBotonClick"
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6
7 <Button
8 android:id="@+id/boton"
9 android:layout_width="match_parent"
10 android:layout_height="wrap_content"
11 android:onClick="onBotonClick"
12 android:text="Botón:\n
13 onClick Layout\n
14 onLongClick Listener" />
15
16 <TextView
17 android:id="@+id/text_view"
18 android:layout_width="match_parent"
19 android:layout_height="wrap_content"
20 android:clickable="true"
21 android:text="Fai click e
22 \nPreme aquí por máis de 1 seg"
23 android:textSize="20sp" />
24
25 </LinearLayout>
Código Java
1 package com.example.u3_03_onlongclick;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.Menu;
6 import android.view.View;
7 import android.view.View.OnClickListener;
8 import android.view.View.OnLongClickListener;
9 import android.widget.Button;
10 import android.widget.TextView;
11 import android.widget.Toast;
12
13 public class U3_03_OnLongClick extends Activity {
14
15 @Override
16 protected void onCreate(Bundle savedInstanceState) {
17 super.onCreate(savedInstanceState);
18 setContentView(R.layout.activity_u3_03__on_long_click);
19
20 Button boton = (Button) findViewById(R.id.boton);
21 boton.setOnLongClickListener(new OnLongClickListener() {
22 @Override
23 public boolean onLongClick(View v) {
24 // TODO Auto-generated method stub
25 Toast.makeText(v.getContext(), "Premeches 1 seg no botón", Toast.LENGTH_SHORT).show();
26 return true;
27 }
28 });
29
30
31
32 TextView tv = (TextView) findViewById(R.id.text_view);
33 tv.setOnLongClickListener(new OnLongClickListener() {
34 @Override
35 public boolean onLongClick(View v) {
36 // TODO Auto-generated method stub
37 Toast.makeText(v.getContext(), "Premeches 1 seg na etiqueta de texto", Toast.LENGTH_SHORT).show();
38 return true;
39 }
40 });
41
42 tv.setOnClickListener(new OnClickListener() {
43
44 @Override
45 public void onClick(View v) {
46 // TODO Auto-generated method stub
47 Toast.makeText(v.getContext(), "Fixeches click na etiqueta de texto", Toast.LENGTH_SHORT).show();
48 }
49 });
50
51 }
52
53 public void onBotonClick(View v) {
54 Toast.makeText(this, "Fixeches Click no botón", Toast.LENGTH_SHORT).show();
55 }
56
57 @Override
58 public boolean onCreateOptionsMenu(Menu menu) {
59 // Inflate the menu; this adds items to the action bar if it is present.
60 getMenuInflater().inflate(R.menu.u3_03__on_long_click, menu);
61 return true;
62 }
63
64 }
- Liñas 21-28:
- Cando se faga un LongClick en boton este executará o método onLonClick() que devolverá true se se chegou a consumar o evento.
- Probar a cambiar a liña 26 a return false e executar a aplicación. Que pasa?
- Liñas 33-40:
- Acontece o mesmo que no caso anterior, so que para a etiqueta de texto.
- Liñas 42-49:
- Se na etiqueta sucede o evento Click chámase ao Listener correspondente da etiqueta.
-- Ángel D. Fernández González e Carlos Carrión Álvarez -- (2015).