以下是以onTouchEvent實現判斷手勢滑動的方向
//裡面的upX upY downX downY 是float全域變數 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(); 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+", 動作:左"); // 原方向不是向右時,方向轉右 if (mDirection != EAST) { mNextDirection = WEST; } }else if(upX > downX && jiaodu< =45) {//右 Log.d("onTouchEvent-ACTION_UP","角度:"+jiaodu+", 動作:右"); // 原方向不是向左時,方向轉右 if (mDirection ! = WEST) { mNextDirection = EAST; } } return true; } return super.onTouchEvent(event); }
文章標籤
全站熱搜