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"
<LinearLayout 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:orientation="vertical" >
<Button
android:id="@+id/boton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onBotonClick"
android:text="Botón:\n
onClick Layout\n
onLongClick Listener" />
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:text="Fai click e
\nPreme aquí por máis de 1 seg"
android:textSize="20sp" />
</LinearLayout>
Código Java
package com.example.u3_03_onlongclick;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class U3_03_OnLongClick extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_u3_03__on_long_click);
Button boton = (Button) findViewById(R.id.boton);
boton.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(v.getContext(), "Premeches 1 seg no botón", Toast.LENGTH_SHORT).show();
return true;
}
});
TextView tv = (TextView) findViewById(R.id.text_view);
tv.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(v.getContext(), "Premeches 1 seg na etiqueta de texto", Toast.LENGTH_SHORT).show();
return true;
}
});
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(v.getContext(), "Fixeches click na etiqueta de texto", Toast.LENGTH_SHORT).show();
}
});
}
public void onBotonClick(View v) {
Toast.makeText(this, "Fixeches Click no botón", Toast.LENGTH_SHORT).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.u3_03__on_long_click, menu);
return true;
}
}
- 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).