分享robotium滑動屏幕的方法

轉載地址:http://testerhome.com/topics/2150

在Robotium羣裏看到有人問,如何滑動屏幕中的某個view,有人說,需要根據屏幕的分辨率來計算。不需要這麼麻煩的,下面的代碼,可以隨意滑動view。

       /**
     * 重寫drag方法,可以從view的任意點滑倒任意點.
     * 從view的最底部滑倒view的最上方,用來判斷區域的滑動比例,可以選擇滑動的比例是多少
     * dragPage(View view,float dragPercentFrom_X,float dragPercentFrom_Y,float dragPercentTo_X,float dragPercentTo_Y)
     * @param View                第一個參數是指定的view名稱
     * @param dragPercentFrom_X   第二個參數是設置起點位置x的百分比
     * @param dragPercentFrom_Y   第三個參數是設置起點位置y的百分比
     * @param dragPercentTo_X     第四個參數是設置終點位置x的百分比
     * @param dragPercentTo_Y     第五個參數是設置終點位置x的百分比
     * 
     * 參考solo.drag(fromX, toX, fromY, toY, stepCount); 
     * 第一個參數是從起始點的橫軸x點,等於view的左上角x座標點+view的寬度百分比;默認百分比是view的0.5倍
     * 第二個參數是從起始點的橫軸y點,等於view的左上角y座標點+view的高度百分百
     * 第三個參數是從終點的橫軸y點(滑動到的座標點x軸),fromX+view的滑動的百分百
     * 第四個參數是從終點的橫軸y點(滑動到的座標點y軸),fromY+view的滑動的百分百
     * 第5個參數是拖動的步驟數,等於(屏幕滑動高度的平方+屏幕滑動高度的平方)的開根號/100
     */
    public void dragPage(View view,float dragPercentFrom_X,float dragPercentFrom_Y,
            float dragPercentTo_X,float dragPercentTo_Y){
        // 存儲view的高度和寬度
        int[] xyLocation = new int[2];
        // 存儲view的xy座標,左下角座標值
        view.getLocationOnScreen(xyLocation);
        // 獲取view的寬度
        final int viewWidth = view.getWidth();
        // 獲取view的高度
        final int viewHeight = view.getHeight();        
        // 計算view的左上角的x座標 
        final float viewLeftTop_x=xyLocation[0];
        // 計算view的左上角的y座標
            final float viewLeftTop_y=xyLocation[1];        
            float FromX=viewLeftTop_x+viewWidth*dragPercentFrom_X;
            float FromY=viewLeftTop_y+viewHeight*dragPercentFrom_Y;   
            float ToX=viewLeftTop_x+viewWidth*dragPercentTo_X;
            float ToY=viewLeftTop_y+viewHeight*dragPercentTo_Y;
            float MoveX=ToX-FromX;
            float MoveY=ToY-FromY;
            int StepCount=(int)((Math.sqrt(Math.pow(MoveX,2.0)+Math.pow(MoveY, 2.0)))/100);
        solo.drag(FromX, ToX, FromY, ToY, StepCount);
        Log.d(TAG, "viewwidth"+" :"+String.valueOf(viewWidth)+" "+"viewheight"+":"+String.valueOf(viewHeight));
        Log.d(TAG, "xylocation[0]"+" :"+String.valueOf(xyLocation[0])+" "+"xylocation[1]"+":"+String.valueOf(xyLocation[1]));   
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章