J'ai une application android dans lequel il y a Affichage de la Liste Comme celui-ci
Maintenant, je veux effectuer deux activités différentes sur la droite/la Gauche glisser des Éléments de la Liste de la même manière Comment l'appel des indigènes de journal des travaux
Balayage à droite de la liste
Je veux que ce type de glisse. Peut-on savoir comment faire pour y arriver. Fondamentalement, je wan à mettre en oeuvre SimpleOnGestureListener
.
J'ai lu un post de réponse par sir vab Android de base de la détection de mouvement et après que je suis en œuvre avec succès des balayez vers la gauche et la droite de balayage de détection, mais la seule chose que je ne suis pas aller sur la Liste de l'Élément de glissement a eu lieu.
Mise À Jour Le 24 Mai 2013
Maintenant, je suis en mesure de détecter l'action de balayage à l'aide de ce code --
SwipeDetector.java
/**
* Class swipe detection to View
*/
public class SwipeDetector implements View.OnTouchListener {
public static enum Action {
LR, // Left to right
RL, // Right to left
TB, // Top to bottom
BT, // Bottom to top
None // Action not found
}
private static final int HORIZONTAL_MIN_DISTANCE = 30; // The minimum
// distance for
// horizontal swipe
private static final int VERTICAL_MIN_DISTANCE = 80; // The minimum distance
// for vertical
// swipe
private float downX, downY, upX, upY; // Coordinates
private Action mSwipeDetected = Action.None; // Last action
public boolean swipeDetected() {
return mSwipeDetected != Action.None;
}
public Action getAction() {
return mSwipeDetected;
}
/**
* Swipe detection
*/@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
{
downX = event.getX();
downY = event.getY();
mSwipeDetected = Action.None;
return false; // allow other events like Click to be processed
}
case MotionEvent.ACTION_MOVE:
{
upX = event.getX();
upY = event.getY();
float deltaX = downX - upX;
float deltaY = downY - upY;
// horizontal swipe detection
if (Math.abs(deltaX) > HORIZONTAL_MIN_DISTANCE) {
// left or right
if (deltaX < 0) {
mSwipeDetected = Action.LR;
return true;
}
if (deltaX > 0) {
mSwipeDetected = Action.RL;
return true;
}
} else
// vertical swipe detection
if (Math.abs(deltaY) > VERTICAL_MIN_DISTANCE) {
// top or down
if (deltaY < 0) {
mSwipeDetected = Action.TB;
return false;
}
if (deltaY > 0) {
mSwipeDetected = Action.BT;
return false;
}
}
return true;
}
}
return false;
}
}
Maintenant l'utiliser avec votre ListView dans ce mode
// Set the touch listener
final SwipeDetector swipeDetector = new SwipeDetector();
lv.setOnTouchListener(swipeDetector);
Dans votre setOnItemClickListener
vous pouvez détecter le mouvement de balayage de tels événements
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView <? > parent, View view,
int position, long id) {
if (swipeDetector.swipeDetected()) {
if (swipeDetector.getAction() == SwipeDetector.Action.LR) {
Toast.makeText(getApplicationContext(),
"Left to right", Toast.LENGTH_SHORT).show();
}
if (swipeDetector.getAction() == SwipeDetector.Action.RL) {
Toast.makeText(getApplicationContext(),
"Right to left", Toast.LENGTH_SHORT).show();
}
}
}
});
Mais encore, je ne suis pas capable d'animer le mouvement de balayage comme ces
S'il vous plaît aider moi.