1
我有8個按鈕我希望應用通過在屏幕上滾動而不是通過觸摸來檢測按鈕?像果凍豆的可訪問性功能?我不知道如何將該功能稱爲?手勢?動感?在Android中沒有觸摸感應的檢測按鈕
這可能嗎?我應該尋找什麼?
謝謝!
我有8個按鈕我希望應用通過在屏幕上滾動而不是通過觸摸來檢測按鈕?像果凍豆的可訪問性功能?我不知道如何將該功能稱爲?手勢?動感?在Android中沒有觸摸感應的檢測按鈕
這可能嗎?我應該尋找什麼?
謝謝!
默認情況下,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;
}
});
}
我們不使用滾動這裏...我想我必須重新句話我說的話 - 要打開AA按鈕,我們在屏幕上觸摸相應的按鈕右側,而不是,我只想碰屏幕一次而不移開我的手我想在屏幕上滾動到下一個按鈕。這可能嗎? – TheDevMan
您需要在根視圖上實現onTouchGestureListener,使用X/Y位置跟蹤ACTION_DOWN事件,然後遍歷視圖的子視圖以查找可聚焦的項目。 – tsmith
感謝Ty S.你有沒有人做過的鏈接和例子? – TheDevMan