Android Robotium - ViewPager滑动不起作用

时间:2014-03-12 13:29:28

标签: android android-viewpager robotium

我想刷一下ViewPager。我使用以下代码进行页面滑动。但不幸的是没有用。

Solo solo = new Solo(getInstrumentation(), getActivity());    
            int screenHeight = activityUtils.getCurrentActivity().getWindowManager().getDefaultDisplay()
                    .getHeight();
            int screenWidth = activityUtils.getCurrentActivity(false).getWindowManager().getDefaultDisplay()
                    .getWidth();
            float x = screenWidth / 3.0f * 2.0f;
            float y = screenHeight / 3.0f * 2.0f;

尝试:1

solo.swipe(x, 0, y, y, 40);

尝试:2

if (side == Side.LEFT)
    drag(0, x, y, y, 40);
else if (side == Side.RIGHT)
    drag(x, 0, y, y, 40);

尝试:3 按照方法工作,但它只移动单页,而且移动速度非常慢。

 solo1.scrollToSide(Solo.RIGHT); 

有快速滑动的选项吗?哪一个最好?请分享您的想法。

我的Robotium 5.1代码

for (int count = 0; count < noOfPages; count++)
   solo.swipeToRight(count);

查看寻呼机滑动的方法

private void swipeToLeft(int stepCount) {
    Display display = solo.getCurrentActivity().getWindowManager().getDefaultDisplay();
    int width = display.getWidth();
    int height = display.getHeight();
    float xStart = width - 10 ;
    float xEnd = 10;
    solo.drag(xStart, xEnd, height / 2, height / 2, stepCount);
}

private void swipeToRight(int stepCount) {
    Display display = solo.getCurrentActivity().getWindowManager().getDefaultDisplay();
    int width = display.getWidth();
    int height = display.getHeight();
    float xStart = 10 ;
    float xEnd = width - 10;
    solo.drag(xStart, xEnd, height / 2, height / 2, stepCount);
}

3 个答案:

答案 0 :(得分:4)

solo.scrollToSide(Solo.RIGHT); 这个实现也足够快......

答案 1 :(得分:1)

此问题已在Robotium 5.1中修复。你可以从这里下载:

https://code.google.com/p/robotium/wiki/Downloads?tm=2

答案 2 :(得分:0)

用于滚动到侧面的robotium repo中的代码是:

public void scrollToSide(int side) {
        switch (side){
        case RIGHT: scroller.scrollToSide(Scroller.Side.RIGHT, 0.70F); break;
        case LEFT:  scroller.scrollToSide(Scroller.Side.LEFT, 0.70F);  break;
        }
    }



@SuppressWarnings("deprecation")
    public void scrollToSide(Side side, float scrollPosition) {
        int screenHeight = activityUtils.getCurrentActivity().getWindowManager().getDefaultDisplay()
                .getHeight();
        int screenWidth = activityUtils.getCurrentActivity(false).getWindowManager().getDefaultDisplay()
                .getWidth();
        float x = screenWidth * scrollPosition;
        float y = screenHeight / 2.0f;
        if (side == Side.LEFT)
            drag(0, x, y, y, 40);
        else if (side == Side.RIGHT)
            drag(x, 0, y, y, 40);
    }

public void drag(float fromX, float toX, float fromY, float toY, 
        int stepCount) {
    dialogUtils.hideSoftKeyboard(null, false, true);
    scroller.drag(fromX, toX, fromY, toY, stepCount);
}

所以看起来你必须接近,我的猜测是你在拖动调用中使用的数字无法使视图寻呼机工作。我建议尝试使用机器人EXCEPT使用的编号为最后一个参数,如果你改变它应该使滑动发生得更快,因为这个数字是完成滑动所需的事件的数量。您可能需要试验这个数字。