Я написал службу 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;
}