(Robotium)写了个滑动屏幕的方法,分享给大家

本文介绍了一种通过Robotium库实现的滑动屏幕中任意view的代码方法,该方法能够根据指定的百分比从view的一个点滑动到另一个点,无需考虑屏幕分辨率的影响。详细解释了代码实现逻辑,并提供了关键参数说明,帮助开发者轻松实现视图滑动操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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]));   

}

其中 View view = solo.getviews(id)来获取到view

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值