基于坐标的适配
很简单就是按照屏幕的长宽比,得出新手机上的横坐标和纵坐标。
比如我使用手机A来定位到两个坐标Xa,Ya,手机A的屏幕尺寸是Wa,Ha;而手机B的屏幕尺寸是Wb,Hb;比例关系如下:
Wa/Xa = Wb/Xb,Ha/Xa=Hb/Yb
于是产生了2个方法专门转换X和Y轴的坐标:而针对坐标的drag和touch操作都会调用这两个方法先转化下坐标,便于适应其它屏幕尺寸的手机。
基于Id操作控件
一般除了滑动(drag)这类操作,对控件的操作用控件id来实现当然准确,比如:
这里使用HierarchyViewer解析界面元素,来根据控件id获取控件的位置,这个位置是一个Point对象,通过获取其X和Y坐标来进行基于坐标的touch操作,从而控制控件。
从图中可以看出HierarchyViewer类中提供的方法主要是用来定位控件相关的,包括根据ID取得控件,根据控件取得控件在屏幕的位置等。
我这里就主要用到了以下两个方法:
findViewById(String):通过控件的ID来获得代表用户控件的一个ViewNode对象。注意这里需要填写的id的可以通过应用源码或者HierarchyViewer工具来获取。方法返回的一个ViewNode的对象,代表目标控件,拥有大量控件相关的属性。
getAbsolutrPositionOfView(ViewNode):这个方法的目的是获得目标ViewNode控件的中间点的绝对坐标值,但是对Menu Options下面的控件不适用。
剩下的就是调用封装好的接口,进行渠道包的安装、卸载和启动。
对于云课堂安卓除了安装卸载启动,针对欢迎页的图片进行了比较来验证启动是否成功。如下。
最后用FatJar将其打成JAR包,安装包路径通过运行参数传入即可。
脚本完成后的确也大幅的节省了渠道包的测试时间。