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