2012-09-06 45 views
1

我有8個按鈕我希望應用通過在屏幕上滾動而不是通過觸摸來檢測按鈕?像果凍豆的可訪問性功能?我不知道如何將該功能稱爲?手勢?動感?在Android中沒有觸摸感應的檢測按鈕

這可能嗎?我應該尋找什麼?

謝謝!

回答

1

默認情況下,Android中的UI元素可以通過滾動球,箭頭鍵等進行關注...視圖具有View.setOnFocusChangedListener回調。您也可以以編程方式設置元素的焦點。

我很快編寫了一些示例代碼,沒有測試。

float initialX = 0; 
float initialY = 0; 
int currentFocusedChild = 0; 
List<View> children; 

public void walkElements() { 
    final LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main_layout); 
    children = mainLayout.getFocusables(View.FOCUS_FORWARD); 
    mainLayout.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch(event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        initialX = event.getX(); 
        initialY = event.getY();       
        break; 
       case MotionEvent.ACTION_MOVE: 
        float diffX = event.getX() - initialX; 
        float diffY = event.getY() - initialY; 

        if(diffY > 0) { 
         if (currentFocusedChild < children.size() - 1) { 
          currentFocusedChild++; 
         } 
        } else { 
         if (currentFocusedChild > 0) { 
          currentFocusedChild--; 
         } 
        } 
        children.get(currentFocusedChild).setSelected(true); 

        //Sleep for a period of time so the selection is slow enough for the user. 
        Thread.sleep(300); 
        break; 
       case MotionEvent.ACTION_UP: 
        children.get(currentFocusedChild).performClick(); 
        break; 
      } 
      return false; 
     } 
    }); 

} 
+0

我們不使用滾動這裏...我想我必須重新句話我說的話 - 要打開AA按鈕,我們在屏幕上觸摸相應的按鈕右側,而不是,我只想碰屏幕一次而不移開我的手我想在屏幕上滾動到下一個按鈕。這可能嗎? – TheDevMan

+0

您需要在根視圖上實現onTouchGestureListener,使用X/Y位置跟蹤ACTION_DOWN事件,然後遍歷視圖的子視圖以查找可聚焦的項目。 – tsmith

+0

感謝Ty S.你有沒有人做過的鏈接和例子? – TheDevMan