列表视图项可以响应向左滑动并向右滑动吗?
如果是这样,如何应用android滑动向左或向右滚动打开不同的意图?我想要像默认情况下在Android中的联系人视图上的呼叫电话或消息一样 .
谢谢
试试这个:
navigaList.setOnTouchListener(swipeDetector); navigaList.setOnItemClickListener(listener); OnItemClickListener listener = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { if(swipeDetector.swipeDetected()) { if(swipeDetector.getAction() == Action.RL) { } else { } } };
SwipeDetector.java
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 // when no action was detected } private static final String logTag = "SwipeDetector"; private static final int MIN_DISTANCE = 100; private float downX, downY, upX, upY; private Action mSwipeDetected = Action.None; public boolean swipeDetected() { return mSwipeDetected != Action.None; } public Action getAction() { return mSwipeDetected; } 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) > MIN_DISTANCE) { // left or right if (deltaX < 0) { Logger.show(Log.INFO,logTag, "Swipe Left to Right"); mSwipeDetected = Action.LR; return true; } if (deltaX > 0) { Logger.show(Log.INFO,logTag, "Swipe Right to Left"); mSwipeDetected = Action.RL; return true; } } else // vertical swipe detection if (Math.abs(deltaY) > MIN_DISTANCE) { // top or down if (deltaY < 0) { Logger.show(Log.INFO,logTag, "Swipe Top to Bottom"); mSwipeDetected = Action.TB; return false; } if (deltaY > 0) { Logger.show(Log.INFO,logTag, "Swipe Bottom to Top"); mSwipeDetected = Action.BT; return false; } } return true; } } return false; } }
我认为你可以使用 OnTouchListener 并通过 MotionEvents ,如 ACTION_DOWN , ACTION_MOVE , UP 或 CANCEL 来捕捉列表项目的填充,初始和当前运动 .
OnTouchListener
MotionEvents
ACTION_DOWN
ACTION_MOVE
UP
CANCEL
2 回答
试试这个:
SwipeDetector.java
我认为你可以使用
OnTouchListener
并通过MotionEvents
,如ACTION_DOWN
,ACTION_MOVE
,UP
或CANCEL
来捕捉列表项目的填充,初始和当前运动 .