首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android中无触摸感的检测按钮

android中无触摸感的检测按钮
EN

Stack Overflow用户
提问于 2012-09-06 10:24:57
回答 1查看 479关注 0票数 1

我有8个按钮,我希望应用程序通过在屏幕上滚动而不是触摸来检测按钮?就像Jelly bean中的辅助功能一样?我不知道该如何将该功能称为?手势?动感?

这个是可能的吗?我应该找什么?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-06 12:15:55

默认情况下,Android中的UI元素可以通过滚动球、箭头键等进行聚焦。视图有一个View.setOnFocusChangedListener回调。还可以通过编程方式将焦点设置在元素上。

我快速编写了一些示例代码,但没有进行测试。

代码语言:javascript
运行
复制
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;
        }
    });

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12292147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档