float upX, upY, downX, downY;
以下是修正過的範本
public boolean onTouchEvent(MotionEvent event) {
float X = event.getX(); // 觸控的 X 軸位置
float Y = event.getY(); // 觸控的 Y 軸位置
switch (event.getAction()) { // 判斷觸控的動作
case MotionEvent.ACTION_DOWN: // 按下
downX = event.getX();
downY = event.getY();
Log.d("onTouchEvent-ACTION_DOWN","DOWN");
return true;
case MotionEvent.ACTION_MOVE: // 拖曳
return true;
case MotionEvent.ACTION_UP: // 放開
Log.d("onTouchEvent-ACTION_UP","UP");
upX = event.getX();
upY = event.getY();
float x=Math.abs(upX-downX);
float y=Math.abs(upY-downY);
double z=Math.sqrt(x*x+y*y);
int jiaodu=Math.round((float)(Math.asin(y/z)/Math.PI*180));//角度
if (upY < downY && jiaodu>45) {//上
Log.d("onTouchEvent-ACTION_UP","角度:"+jiaodu+", 動作:上");
}else if(upY > downY && jiaodu>45) {//下
Log.d("onTouchEvent-ACTION_UP","角度:"+jiaodu+", 動作:下");
}else if(upX < downX && jiaodu<=45) {//左
Log.d("onTouchEvent-ACTION_UP","角度:"+jiaodu+", 動作:左");
}else if(upX > downX && jiaodu<=45) {//右
Log.d("onTouchEvent-ACTION_UP","角度:"+jiaodu+", 動作:右");
}
return true;
}
return super.onTouchEvent(event);
}
沒有留言:
張貼留言