Comment faire pour déterminer un appui long sur android?
Je suis à la recherche d'un moyen pour que quand un utilisateur de longue touche une mapview (disons pour 1000ms) que je ne peux certains comment faire une certaine action.
Comment puis-je juger de combien de temps un utilisateur de longue touche un mapsview(ou opinion).
Il serait similaire à android application google maps, lorsque vous le touchez, il apporte un ballon de superposition élément.
Modifier ajouté
mapView.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
Toast.makeText(mapView.getContext(), "Hello 123", 2000);
return false;
}
});
le ci-dessus ne fonctionne pas... des idées pourquoi?
Modifier ajouté
C'est ce que j'essaie pour le moment, mais il ne semble pas fonctionner, même si je n'appuyez sur sur le téléphone, il dit que l'événement est une action_move,
je suis en utilisant un intérieur de classe dans mon MapActivity
private long startTime=0;
private long endTime=0;
class MapOverlay extends Overlay {
@Override
public boolean onTouchEvent(MotionEvent ev, MapView mapView) {
if(ev.getAction() == MotionEvent.ACTION_DOWN){
//record the start time
startTime = ev.getEventTime();
Log.d("LC", "IN DOWN");
}else if(ev.getAction() == MotionEvent.ACTION_UP){
//record the end time
endTime = ev.getEventTime();
Log.d("LC", "IN UP");
}else if(ev.getAction() == MotionEvent.ACTION_MOVE){
Log.d("LC", "IN move");
endTime=0;
}
//verify
if(endTime - startTime > 1000){
//we have a 1000ms duration touch
//propagate your own event
Log.d("LC", "time touched greater than 1000ms");
Toast.makeText(getBaseContext(), "Hello 123", Toast.LENGTH_SHORT).show();
startTime=0;
endTime=0;
return true; //notify that you handled this event (do not propagate)
}
return false;//propogate to enable drag
}
}
et voici mon journal d'erreurs qui n'a aucun sens pour moi
06-29 14:29:55.509: DEBUG/LC(7693): IN move
06-29 14:29:56.149: DEBUG/LC(7693): IN UP
06-29 14:29:56.149: DEBUG/LC(7693): 6346707 6349261
06-29 14:29:56.149: DEBUG/LC(7693): time touched greater than 1000ms
la fin des temps doit être mis à zéro...mais il n'est pas...une idée de pourquoi?
protected long _touchStartTime; public override bool OnTouchEvent(MotionEvent e){if (e.Action == MotionEventActions.Down) _touchStartTime = e.EventTime; if (e.Action == MotionEventActions.Up && e.EventTime - _touchStartTime > 1000) DoSomethingFun(); return base.OnTouchEvent(e);}
Bonjour, avez-vous comprendre comment faire de l'action si l'utilisateur a appuyé sur le bouton pendant quelques temps (disons 1000ms) ?
OriginalL'auteur molleman | 2011-06-29
Vous devez vous connecter pour publier un commentaire.
C'est comment avez-vous l'habitude de créer un onLongClickListener. Essayez ceci:
Référence à votre edit:
Cela pourrait être la façon d'obtenir ce que vous voulez.
Et maintenant, vous pouvez vérifier avec checkGlobalVariable fonction:
C'est comment vous pouvez gérer ce cas. Bonne chance.
OriginalL'auteur Umitk
Vous êtes probablement à la recherche pour une longue cliquez sur?
Vous aurez à donner votre point de vue à être long cliquable par l'ajout d'android:longClickable de votre point de vue xml, ou en appelant setLongClickable(true).
Ensuite, vous pouvez ajouter un OnLongClickListener à la vue.
Je ne sais pas de manière à déterminer exactement combien de temps le clic long. Mais à la longue par défaut cliquez sur est le même que le google maps de long sur que vous avez mentionné.
OnLongClickListener
OriginalL'auteur snowstreams
utilisation
System.currentTimeMillis()
au lieu deev.getEventTime();
OriginalL'auteur user1884608
Quand
MotionEvent.ACTION_UP
,endTime
sera mis à ev.getEventTime(), ce réglageendTime
à zéro lors de laMotionEvent.ACTION_MOVE
être pas d'incidence.Au lieu de définir
endTime
à zéro, vous devez définirstartTime
à ev.getEventTime()OriginalL'auteur eleven
Vous pouvez mettre en place un longClickListener et un touchListener. Ajouter une classe boolean membre de données de la variable longClicked et affectez la valeur false à l'origine. C'est la façon dont vous pouvez définir la longClickListener.
Pour touchListener
Il vous donnera le même effet que google maps clic long. Espérons que cela aide.
OriginalL'auteur Jeetendra Gan