2014-02-13 12 views
0

我有三個textview,tv_one和tv_two,tv_three,當用戶從文本視圖滑動到另一個文本視圖時,我會截取滑動事件。攔截在不同的附近滑動TextView

我已經寫這

@Override 
public boolean onTouch(View v, MotionEvent event) { 

    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: { 
     //do something 
     return true; 
    } 
    case MotionEvent.ACTION_UP: { 
     // do something 
     return true; 
    } 

    } 
    return false; 
} 

這樣我可以攔截在用戶按下第一個TextView的,當從屏幕釋放他的手指。我會知道我該如何攔截在該視圖之間滑動。 例如,如果用戶從tv_one滑動到tv_three,應用程序應該知道該路徑從一到三。我能怎麼做?

+0

我想你應該在你的佈局事件onTouch包含三個textViews和計算混帳event.getX和event.getY在觸摸的每一點,然後你可以判斷滑動是否從一個textView開始並轉到另一個 –

回答

2

您可以使用視圖座標來定義向下/向上的位置。

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    float currentX = event.getX(); 
    float currentY = event.getY(); 
    int action = event.getAction(); 
    switch (action & MotionEvent.ACTION_MASK) { 
     case MotionEvent.ACTION_DOWN: 
      startX = currentX; 
      startY = currentY; 
      return true; 
     case MotionEvent.ACTION_MOVE: 
      moveX = currentX; 
      moveY = currentY; 
      return true; 
     case MotionEvent.ACTION_UP: 
      upX = currentX; 
      upY = currentY; 
      return true; 
    } 
    return false; 
} 

並檢查:

int top = tv_one.getTop(); 
int left = tv_one.getLeft(); 
int width = tv_one.getWidth(); 
int height = tv_one. getHeight(); 

RectF tv_one_rect = new RectF(left, top, left + width, top + height); 
boolean insideTv_one = tv_one_rect.contains(moveX, moveY);