一、UiScrollable简介
1、UiScrollable是UiCollection的子类。
2、UiScrollable专门处理滚动时间,提供各种滚动方法。
常用功能有:向前滚动、向后滚动、快速滚动、滚动到某个对象、设置滚动方向、设置滚动次数等。
二、API详细介绍
1、快速滚动
(1)相关概念
步长:从一点到另一点使用的时间。步长越短滚动越快,反之步长越长滚动越慢。
扫动次数:触发滚动的次数。
(2)相关API
返回值 | API | 说明 |
boolean | flingBackward() | 以步长为5快速向后滑动 |
boolean | flingForward() | 以步长为5快速向前滑动 |
boolean | flingToBeginning(int maxSwipes) | 自定义扫动次数以步长为5快速滑动到开启 |
boolean | flingToEnd(int maxSwipes) | 自定义扫动次数以步长为5快速滑动到结束 |
注解:
flingBackward(),模拟的动作是:固定住一点,然后往后拉。
flingForward(),模拟的动作是:固定住一点,然后往前拉。
flingToBeginning(int maxSwipes),模拟的动作是:往列表顶部方向拖动(效果等同于flingBackward()),经过实测1次步长并没有一直到列表顶部。
flingToEnd(int maxSwipes),模拟的动作是:往列表底部方向拖动(效果等同于flingForward()),经过实测1次步长并没有一直到列表底部。
(3)示例
UiScrollable scroll = new UiScrollable(new UiSelector.className(“Android.widget.ListView”));
scroll.flingBackward();
2、获取列表子元素
(1)相关API
返回值 | API |
UiObject | getChildByDescription(UiSelector childPattern, String text, boolean allowScrollSearch) |
是否允许滚动查找获取具备UiSelector条件元素集合后再以文本描述条件查找对象 | |
UiObject | getChildByDescription(UiSelector childPattern, String text) |
默认滚动获取具备UiSelector条件的元素集合后再以文本描述条件查找对象 | |
UiObject | getChildByInstance(UiSelector childPattern, int instance) |
获取具备UiSelector条件的子集,再从子集中按照实例筛选想要的元素(不滚动) | |
UiObject | getChildByText(UiSelector childPattern, String text, boolean allowScrollSearch) |
是否允许滚动获取具备UiSelector条件的元素集合后再以文本条件查找对象 | |
UiObject | getChildByText(UiSelector childPattern, String text) |
默认滚动获取具备UiSelector条件元素集合后再以文本条件的查找对象 |
如:
UiScrollable scroll = new UiScrollable(new UiSelector.className(“android.widget.ListView”));
UiObject obj = scroll.getChildByText(new UiSelector.className(“android.widget.TextView”),“号码1”,true); //当不滚动查找,就跟UiCollection效果一样
注:默认滚动方向是向列表底部,到列表底部或者顶部会换个方向继续查找。
3、获取与设置最大滚动次数常量值
(1)相关API
返回值 | API | 说明 |
int | getMaxSearchSwipes() | 获取执行搜索滑动过程中的最大滑动次数,默认常量为30 |
UiScrollable | setMaxSearchSwipes(int swipes) | 设置最大可扫动次数 |
4、滑动区域校准常量设置与获取
(1)相关概念
校准常量:指的是滑动操作坐标时(起点和终点)的偏移量,即控件上不可滑动的区域占比。
(2)相关API
返回值 | API | 说明 |
double | getSwipeDeadZonePercentage() | 校准常量默认值为0.1(10%) |
UiScrollable | setSwipeDeadZonePercentage(double swipeDeadZonePercentage) | 设置控件上不可滑动的区域占比 |
(3)示例
UiScrollable scroll = new UiScrollable(new UiSelector.className(“android.widget.ListView”));
scroll.setSwipeDeadZonePercentage(0.15); //设置listview校准常量为0.15,即距离listview顶部15%和底部15%的区域不可滑动,只有控件中部70%的区域可滑动。当校准常量设置为0.5时,控件的可滑动区域为0,滑动的动作效果将和单击的效果一样。
5、向前与向后滚动
(1)相关API
返回值 | API | 说明 |
boolean | scrollBackward(int steps) | 自定义步长向后滑动 |
boolean | scrollBackward() | 以默认步长55向后滑动 |
boolean | scrollDescriptionIntoView(String text) | 滚动到描述所在位置,并且尽量让它居于屏幕中央 |
boolean | scrollForward() | 以默认步长55向前滚动 |
boolean | scrollForward(int steps) | 自定义步长向前滚动。 当步长很短(如1)时,滑动效果同单机;当步长很长时,滑动效果同双击。 |
6、滚动到某个对象
(1)相关API
返回值 | API | 说明 |
boolean | scrollIntoView(UiSelector selector) | 滚动到条件元素所在位置,并且尽量让其居于屏幕中央 |
boolean | scrollIntoView(UiObject obj) | 滚动到对象所在位置,并且尽量让其居于屏幕中央 |
boolean | scrollTextIntoView(String text) | 滚动到文本对象所在位置,并且尽量让其居于屏幕中央 |
boolean | scrollToBeginning(int maxSwipes) | 自定义最大滚动次数,滚动到开始位置 |
boolean | scrollToBeginning(int maxSwipes, int steps) | 自定义最大滚动次数与步长,滚动到开始位置 |
boolean | scrollToEnd(int maxSwipes, int steps) | 自定义最大滚动次数与步长,滚动到结束位置 |
boolean | scrollToEnd(int maxSwipes) | 自定义最大滚动次数,滚动到结束位置 |
(2)示例
UiScrollable scroll = new UiScrollable(new UiSelector.className(“android.widget.ListView”));
UiSelector selector = new UiSelector().text(“号码1”);
scroll.scrollIntoView(selector); //滚动到“号码1”
scroll.scrollToEnd(10, 5); //以步长(速率)5滚动到列表底部,最多滚动10次。
7、设置滚动方向
(1)相关概念
(2)相关API
返回值 | API | 说明 |
UiScrollable | setAsHorizontalList() | 设置滚动方向设置为水平滚动 |
UiScrollable | setAsVerticalList() | 设置滚动方向设置为纵向滚动 |
(3)示例
UiScrollable scroll = new UiScrollable(new UiSelector.className(“android.support.v4.view.ViewPager”));
scroll.setAsHorizontalList();
scroll.scrollBackward(); //水平方向往后滚动
scroll.scrollForward(); //水平方向往前滚动
注:
纵向滚动:上方向为Forward,下方向为Backward()
scrollBackward()效果等同于flingBackward()
scrollForward()效果等同于flingForward()
水平滚动:左为Forward,右方向为Backward()