AccessibilityNode: как плавно прокручиваться при выполнении действия прокрутки на AccessibilityNode в Android - PullRequest
0 голосов
/ 28 ноября 2018

Я написал службу Android, которая на основе жеста отпечатка пальца прокручивает содержимое текущей активной деятельности.прокрутка работает отлично, но я хочу знать, как я могу контролировать скорость прокрутки, если у меня есть AccessibilityNode.

private AccessibilityNodeInfo                                                                                                                                                                            findScrollableNode(AccessibilityNodeInfo root,String scrollPos) throws InterruptedException {
    Deque<AccessibilityNodeInfo> deque = new ArrayDeque<>();
    deque.add(root);
    boolean scrollableNode = false;
    int count = 0;
    while (!deque.isEmpty()) {
        AccessibilityNodeInfo node = deque.removeFirst();
        String className = node.getClassName().toString();
        if(className.equals("android.support.v7.widget.RecyclerView")){
            scrollableNode = scrollView(node);
        }
        if (node.getActionList().contains(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_UP) || node.getActionList().contains(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_DOWN)
                || scrollableNode) {
            if(scrollPos.equals("scrollDown")){
                if (node != null && node.getClassName().toString().equals("android.widget.ListView")) {
                    node.performAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_DOWN.getId());

                } else if (node != null &&
                        (node.getClassName().toString().equals("android.support.v7.widget.RecyclerView") || node.getClassName().toString().equals("android.webkit.WebView"))) {
                    node.performAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD.getId());
                }else if (node!=null){
                    node.performAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_DOWN.getId());
                }
            }
        }
        for (int i = 0; i < node.getChildCount(); i++) {
            try {
                if(node.getChild(i) != null) {
                    deque.addLast(node.getChild(i));
                }
            }catch(Exception e){
                Log.e("Exception",e.toString());
            }
        }
    }
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...