2012-05-01 53 views
0

我試圖完成下面的事情選擇textViews並得到他們的價值觀

假設我有5-6 TextViews與價值S N A K E

現在,我想按S的TextView然後滑動我的手指在N選擇它也然後移動到我的方式E.我想這樣做,以便我可以在我的字符串或字符序列等「SNAKE

如果有任何想法請分享我。我無法得到它在這裏如何使用onTouch。 另外,我加入textViews動態,所以我來動態地設置其ID也 問候

+1

use someting like textview.setOntouchListener() –

回答

0

我從來沒有這樣做,但這裏有一個想法。

假設您的所有textview都處於某種佈局,您可以禁用textview的可聚焦性並在您的基礎容器上創建onTouch偵聽器。

開始跟蹤上的鼠標按下事件

@Override public boolean onTouch(View v, MotionEvent event) { 
    if(event.getAction == MotionEvent.ACTION_DOWN) 
    { 
     captureInput = true; 
    } 
} 

*在你的ACTION_MOVE事件,檢查當前的位置是一個TextView以上,如果是這樣,捕捉價值*

@Override public boolean onTouch(View v, MotionEvent event) { 
    int action = event.getAction(); 

    if(action == MotionEvent.ACTION_DOWN) 
    { 
     captureInput = true; 
    } 
    else if(action == MotionEvent.ACTION_MOVE 
    { 
     //get x/y of your finger 
     int X = (int)event.getX(); 
     int Y = (int)event.getY(); 

     //Somehow check if the x,y are overlapping with one of your textivews 
     // If so, add that textview's text to your list 
     // Below is pseudo code 
     /* for(TextView curTV: allTextViews) 
      { 
       if(isOverlapping(X,Y)) 
       { 
        listOfSwipedCharacters.add(curTV.getText()); 
       } 
      } 
    } 


} 

最後,當用戶釋放他們的手指時,停止跟蹤並且使用單詞列表做某事

@Override public boolean onTouch(View v, MotionEvent event) { 
    int action = event.getAction(); 

    if(action == MotionEvent.ACTION_DOWN) 
    { 
     captureInput = true; 
    } 
    else if(action == MotionEvent.ACTION_MOVE 
    { 
     //get x/y of your finger 
     int X = (int)event.getX(); 
     int Y = (int)event.getY(); 

     //Somehow check which textview the X,Y coords are overlapping 
     // Below is pseudo code 
     /* for(TextView curTV: allTextViews) 
      { 
       if(isOverlapping(X,Y)) 
       { 
        listOfSwipedCharacters += (curTV.getText()); 
       } 
      }*/ 
    } 
    else if(action == MotionEvent.ACTION_UP) 
    { 
     captureInput = false; 
     //Do whatever you want with the string of information that you've captured 
    } 

}

再一次,我不知道這是否會工作,它只是在做法猜測。我懷疑循環遍歷每個文本視圖以檢查重疊的性能會非常糟糕,所以可能比運行for循環更有效。

既然你知道你不能跳過字母時,你可以創建一個所有可能的滑動位置(周圍字母)的短名單,每當你添加一個新的字母。然後在您的鼠標事件中,檢查是否有任何這些字母被鼠標移動事件擊中。例如,在一個標準的單詞搜索遊戲中,一旦你選擇了一個字母,只有9個其他可能的位置供你刷卡(周圍的字母),所以你應該只檢查這9個位置是否在你捕獲鼠標移動事件。

編輯:我想你可以使用上面的解決方案,如果你將onTouch監聽器連接到每個和每個文本視圖。關於觸摸的相同前提將適用:向下=開始捕捉,移動=捕捉文本,向上=停止捕捉。這將使您無需識別哪些文本視圖正在被徘徊,因爲觸發onTouch事件的文本視圖將是用戶正在滑過的文本視圖。