gpt4 book ai didi

android - 在android中检测没有触摸感的按钮

转载 作者:行者123 更新时间:2023-11-30 04:02:26 25 4
gpt4 key购买 nike

我有 8 个按钮 我希望应用仅通过在屏幕上滚动而不是通过触摸来检测按钮?喜欢 Jelly bean 中的无障碍功能?我不确定如何称呼该功能?手势?运动感应?

这可能吗?我应该寻找什么?

谢谢!

最佳答案

默认情况下,Android 中的 UI 元素可通过滚动球、箭头键等获得焦点... View 具有 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;
}
});

}

关于android - 在android中检测没有触摸感的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12292147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com