经过测试,UiObject的longClick无法实现在android.widget.TextView长按的效果。经过查找资料与实际测试,发现原地swipe可以用来模拟长按,代码如下:
private boolean LongPress(final MatchSelectUI stMatchSelectUI,int nSeconds)
{
boolean bRet = false;
UiObject stUiObject = new UiObject(stMatchSelectUI.CreateUISelector());
bRet = stUiObject.exists();
if(true == bRet)
{
bRet = false;
try
{
//longClick无法实现长按
//bRet = stUiObject.longClick();
Rect stRect = stUiObject.getVisibleBounds();
int nPressX = stRect.centerX();
int nPressY = stRect.centerY();
//100对应着0.5秒
int nSecondsSteps = 200;
int nSteps = nSecondsSteps * nSeconds;
getUiDevice().swipe(nPressX, nPressY, nPressX, nPressY,nSteps);
bRet = true;
}
catch (UiObjectNotFoundException e)
{
// TODO Auto-generated catch block
DDMSPrint("UiObject.LongPress() 事件 出现异常 UiObjectNotFoundException");
}
}
return bRet;
}