Android Robotium-浏览页面滑动不工作

Android Robotium-浏览页面滑动不工作,android,android-viewpager,robotium,Android,Android Viewpager,Robotium,我想刷卡浏览页面。我使用以下代码进行页面滑动。但不幸的是,这种方法不起作用 Solo solo = new Solo(getInstrumentation(), getActivity()); int screenHeight = activityUtils.getCurrentActivity().getWindowManager().getDefaultDisplay() .getHeight();

我想刷卡浏览页面。我使用以下代码进行页面滑动。但不幸的是,这种方法不起作用

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

尝试:2

尝试:3 下面的方法可以工作,但它只移动一页,而且移动速度非常慢

 solo1.scrollToSide(Solo.RIGHT); 
有没有快速刷卡的选项?哪一个最好?请分享你的想法

我与Robotium 5.1的代码


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);
}

看来你一定很接近了,我猜你在拖动呼叫中使用的号码无法使浏览寻呼机工作。我建议尝试robotium使用的枚举器,但最后一个参数除外,如果您更改该参数,将加快刷卡速度,因为此数字是完成刷卡所需的事件数。您可能需要尝试一下这个数字。

那么,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);
}

看来你一定很接近了,我猜你在拖动呼叫中使用的号码无法使浏览寻呼机工作。我建议尝试robotium使用的枚举器,但最后一个参数除外,如果您更改该参数,将加快刷卡速度,因为此数字是完成刷卡所需的事件数。您可能需要尝试使用该数字。

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


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


solo.scrollToSideSolo.RIGHT;
此实现也足够快…

solo.scrollToSideSolo.RIGHT;
此实现也足够快…

我下载了Robotium 5.1,但问题仍然存在。请尝试使用以下方法:solo.scrollViewToSidesolo.GetViewPager,solo.RIGHT;我下载了Robotium 5.1,但问题仍然存在。请尝试使用:solo.scrollViewToSidesolo.GetViewPager,solo.RIGHT;
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);
}
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);
}