Android的0nTouch事件问题[向下滑动并向上滑动]
即时通讯有一个应用程序需要onTouch刷卡事件,如Iphone。他们是Android的0nTouch事件问题[向下滑动并向上滑动]
- 向上滑动。
- 向下滑动。
- 向左滑动。
- 向右滑动。
我实现了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
}
这是我前段时间写的一个监听器,它可以处理两个下来的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;
}
});
嗨Aleadam谢谢你的答案..我的问题是我想要所有4事件SWIPE UP,DOWN,左右。如果我使用你的答案,将导致2行动。即上/下和左/右。 – bHaRaTh 2011-04-18 05:41:26
我明白,但你仍然可以评估每个'ACTION_MOVE'事件中任何方向的mininum移动的位置/时间,并相应地采取行动,即一堆'if(event.getX> oldXPos)'...'if( event.getY()> oldYPos)'等,第一个达到你的门槛触发行动,并重置所有的标记。 – Aleadam 2011-04-18 05:45:52
感谢Aleadam听起来不错..我现在会尝试。 – bHaRaTh 2011-04-18 05:47:53
嗨crisitain感谢我已经添加了答复,但它会导致与滑动下来,向左或向右滑动操作。它会导致2个行动。 – bHaRaTh 2011-04-18 05:36:54
编辑我的答案...好运 – Cristian 2011-04-18 05:43:06
您好cristain我会尝试这个..谢谢 – bHaRaTh 2011-04-18 05:45:58