与GestureListener合并的android:按钮:onScroll

时间:2013-12-08 08:56:47

标签: android button view gesture

我有一个按钮(男孩),我希望,当男孩被触摸时,它可以根据用户手指的手势向左或向右滚动。

所以我实现如下:

声明:

GestureDetector myGesture;
myGesture = new GestureDetector(getContext(), new MyOnGestureListener());

注册:

          image_boy.setOnTouchListener(new OnTouchListener()
          {
               @Override
               public boolean onTouch(View v, MotionEvent event) 
               {
                   return myGesture.onTouchEvent(event);
               }
          });
          image_boy.setClickable(true);  

类:

    class MyOnGestureListener implements OnGestureListener{

      @Override
      public boolean onDown(MotionEvent arg0) 
      {
       // TODO Auto-generated method stub
       return false;
      }

      @Override
      public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 
      {
       return false;
      }

      @Override
      public void onLongPress(MotionEvent e) 
      {
       // TODO Auto-generated method stub

      }

      @Override
      public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) 
      {
            boy_x = ((int) e2.getX());
            if (boy_x > (viewWidth - BOY_WIDTH))
            {
                boy_x = viewWidth - BOY_WIDTH - 10;
            }

            if (boy_x <0)
            {
                boy_x = 0 + 10;     
            }
            image_boy.setX(boy_x); 
            image_boy.setY(viewHeight - BOY_HEIGHT); 

       return true;
      }

      @Override
      public void onShowPress(MotionEvent e) {
       // TODO Auto-generated method stub

      }

      @Override
      public boolean onSingleTapUp(MotionEvent e) {
       // TODO Auto-generated method stub
       return false;
      }};   
} 

问题:

这个男孩一旦被触摸/按下,就可以向左和向右滚动,但看起来很奇怪,如

  1. 一旦触摸并滚动,男孩将滚动到正确的方向,但切换/摇动2个男孩图像,在其旅程中左右交换

  2. 当手指移动停止(仍然触摸)时,男孩将回到原始位置或新位置(非常不稳定)

  3. 怎么能解决这个问题?

1 个答案:

答案 0 :(得分:0)

我已设法使用onTouch的{​​{1}}:

以另一种方式实施
ACTION_MOVE