使用Robotium进行快速或慢速拖动滚动。

7

这是我拖动当前屏幕的代码。

int screenWidth = getActivity().getWindowManager().getDefaultDisplay().getWidth();
int screenHeight = getActivity().getWindowManager().getDefaultDisplay().getHeight();
int fromX, toX, fromY, toY = 0;
fromX = screenWidth/2;
toX = screenWidth/2;
fromY = (screenHeight/2) + (screenHeight/3);
toY = (screenHeight/2) - (screenHeight/3);
int scroll_time = 10000;             
solo.sleep(5000);
    // Drag UP  
solo.drag(fromX, toX, fromY, toY, 40);
Log.d(TAG, "Drag 1");
    // here default origin (x,y = 0,0) is left upper corner

这里滚动是可以工作的,但非常缓慢。

所以为了快速滚动,在这段代码中需要做出哪些改变?

2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
9

我遇到了同样的问题,您需要调整以下代码行:

solo.drag(fromX, toX, fromY, toY, 40); //Change 40 to 10
这将会增加您的滚动速度,步数越低,滚动速度就越快!

非常感谢Royston Pinto,我的Galaxy Ace手机上工作得很好。 - VISHAL VIRADIA

0
 public class MainActivity extends Activity  {
 int windowwidth;
 int windowheight;    
 ImageView ima1,ima2;

  private android.widget.RelativeLayout.LayoutParams layoutParams ;
 // private android.widget.RelativeLayout.LayoutParams layoutParams ;
 //private android.widget.RelativeLayout.LayoutParams layoutParams ;           

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     windowwidth = getWindowManager().getDefaultDisplay().getWidth();
     windowheight = getWindowManager().getDefaultDisplay().getHeight();

     System.out.println("width" +windowwidth);
     System.out.println("height" +windowheight);             

     ima1 = (ImageView)findViewById(R.id.imageview1);
     ima1.setOnTouchListener(new View.OnTouchListener() {  

   public boolean onTouch(View v, MotionEvent event) {
   layoutParams = (RelativeLayout.LayoutParams) ima1.getLayoutParams();

     switch(event.getAction())                   
        {
          case MotionEvent.ACTION_DOWN:                          
                break;     

          case MotionEvent.ACTION_MOVE:
                int x_cord = (int) event.getRawX();
                int y_cord = (int) event.getRawY();

          System.out.println("value of x" +x_cord);
          System.out.println("value of y" +y_cord);           

                if (x_cord > windowwidth) {
                    x_cord = windowwidth;
                   }
                if (y_cord > windowheight) {
                    y_cord = windowheight;
                   }
         layoutParams.leftMargin = x_cord-25;
         layoutParams.topMargin = y_cord-25;
         //   layoutParams.rightMargin = x_cord-25;
         //   layoutParams.bottomMargin = y_cord-25;
         ima1.setLayoutParams(layoutParams);
                 break;
           default: break;
          }  
           return true;
        }
     });

     ima2 = (ImageView)findViewById(R.id.imageview2);
     ima2.setOnTouchListener(new View.OnTouchListener() {         

 public boolean onTouch(View v, MotionEvent event) {
     layoutParams = (RelativeLayout.LayoutParams) ima2.getLayoutParams();
          switch(event.getActionMasked())
             {
               case MotionEvent.ACTION_DOWN:
                   break;
               case MotionEvent.ACTION_MOVE:
                   int x_cord = (int) event.getRawX();
                   int y_cord = (int) event.getRawY();

                   System.out.println("value of x1" +x_cord);
               System.out.println("value of y1" +y_cord);                            

                    if (x_cord > windowwidth) {
                        x_cord = windowwidth;
                    }
                    if (y_cord > windowheight) {
                        y_cord = windowheight;
                    }
                    layoutParams.leftMargin = x_cord - 25;
                    layoutParams.topMargin = y_cord - 75;
                    ima2.setLayoutParams(layoutParams);
                    break;
                default: break;
            }
            return true;
        }
    });
   }
 }

看看这个,它很有用 如何在Android屏幕上拖放图片?


我使用Robotium进行自动化,这里不需要用户交互,也不需要setOnTouchListener。我的上述代码可以工作,但我想要快速滚动当前屏幕。无论如何,感谢NagarjunaReddy的回复和尝试。 - VISHAL VIRADIA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,