Android的0nTouch事件问题[向下滑动并向上滑动]

问题描述:

即时通讯有一个应用程序需要onTouch刷卡事件,如Iphone。他们是Android的0nTouch事件问题[向下滑动并向上滑动]

  1. 向上滑动。
  2. 向下滑动。
  3. 向左滑动。
  4. 向右滑动。

我实现了onTouch事件如下。并且我正确地滑动左右行动。但是,这是实施滑动向下和向上行为的正确方法。

mycode的:

float downXValue,downYValue; 

    @Override 
    public boolean onTouchEvent(MotionEvent arg1) { 

     // Get the action that was done on this touch event 
     switch (arg1.getAction()) 
     { 
      case MotionEvent.ACTION_DOWN: 
      { 
       // store the X value when the user's finger was pressed down 
       downXValue = arg1.getX(); 
       downYValue = arg1.getY(); 
       break; 
      } 

      case MotionEvent.ACTION_UP: 
      { 
       // Get the X value when the user released his/her finger 
       float currentX = arg1.getX(); 
       float currentY=arg1.getY(); 

       // going backwards: pushing stuff to the right 
       if (downXValue < currentX) 
       { 
        Log.d(DEBUG_TAG, "Right"); 
       } 

       // going forwards: pushing stuff to the left 
       if (downXValue > currentX) 
       { 

        Log.d(DEBUG_TAG, "Left"); 
       } 
       break; 
      } 
     } 

     //GestureListener is called here... 

     //return gestures.onTouchEvent(event); 


     return true; 
    } 

谢谢。

怎样......

你确定你写上面的代码?

编辑

好吧,我相信你。你所要做的基本上是:

double sizeInX = Math.abs(downXValue - currentX); 
double sizeInY = Math.abs(downYValue - currentY); 
if(sizeInX > sizeInY){ 
    // you better swipe horizontally 
} else { 
    // you better swipe vertically 
} 
+0

嗨crisitain感谢我已经添加了答复,但它会导致与滑动下来,向左或向右滑动操作。它会导致2个行动。 – bHaRaTh 2011-04-18 05:36:54

+0

编辑我的答案...好运 – Cristian 2011-04-18 05:43:06

+0

您好cristain我会尝试这个..谢谢 – bHaRaTh 2011-04-18 05:45:58

这是我前段时间写的一个监听器,它可以处理两个下来的swype。 Theres a float oldPosition变量,我用来跟踪触摸位置。书中有一些不必要的代码,但你会得到的想法:

LinearLayout tableM = (LinearLayout) findViewById (R.id.tableM); 
    tableM.setOnTouchListener(new OnTouchListener() { 
     public boolean onTouch(View view, MotionEvent event) { 
      if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) { 
       oldPosition = event.getY(); 
       return true; 
      } else 
      if (event.getAction() == android.view.MotionEvent.ACTION_MOVE) { 
       if (event.getY() < oldPosition) { 
        tableIndexM++; 
        if (tableIndexM > (minsecs.length - 3)) { 
         tableIndexM = 0; 
        } 
        fillTable (rowM0, rowM1, rowM2, minsecs, tableIndexM); 
       } 
       else if (event.getY() > oldPosition) { 
        tableIndexM--; 
        if (tableIndexM < 0) { 
         tableIndexM = minsecs.length - 3; 
        } 
        fillTable (rowM0, rowM1, rowM2, minsecs, tableIndexM); 
       } 
       oldPosition = event.getY(); 
       return true; 
      } 
      return false; 
     } 
    });   
+0

嗨Aleadam谢谢你的答案..我的问题是我想要所有4事件SWIPE UP,DOWN,左右。如果我使用你的答案,将导致2行动。即上/下和左/右。 – bHaRaTh 2011-04-18 05:41:26

+0

我明白,但你仍然可以评估每个'ACTION_MOVE'事件中任何方向的mininum移动的位置/时间,并相应地采取行动,即一堆'if(event.getX> oldXPos)'...'if( event.getY()> oldYPos)'等,第一个达到你的门槛触发行动,并重置所有的标记。 – Aleadam 2011-04-18 05:45:52

+0

感谢Aleadam听起来不错..我现在会尝试。 – bHaRaTh 2011-04-18 05:47:53