android:按下按钮并跟随手势

Posted

技术标签:

【中文标题】android:按下按钮并跟随手势【英文标题】:android: button pressed and to follow gesture 【发布时间】:2013-12-07 17:20:45 【问题描述】:

我有一个扩展视图。

在扩展视图中,有一个按钮。我想要一个手势监听器,这样当按钮被触摸并向右/向左滑动时,按钮将跟随手指向右/向左。

我实现的是在主要活动中,

主要活动:

   @Override
   public boolean onTouchEvent(MotionEvent event) 
   
       int x = (int)event.getX();
       int y = (int)event.getY();

       if (y > viewHeight - 250)
       
           game_collecting_ex_view.get_touched_x(x);   
       
       switch (event.getAction()) 
       
           case MotionEvent.ACTION_DOWN:
           case MotionEvent.ACTION_MOVE:
           case MotionEvent.ACTION_UP:
       
   return false;
   

扩展视图:

   public void get_touched_x (int x)
          
        boy_x = x;
        image_boy.setX(boy_x); 
        image_boy.setY(viewHeight - BOY_HEIGHT);    
   

问题:

这样,当我按下按钮以外的任何地方时,按钮都会跟随手指向左或向右移动。但是,如果按下按钮,它就不会移动。

如何修改?谢谢!

【问题讨论】:

如何使用public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) ??我用谷歌搜索过,大多数人都在使用onFling 【参考方案1】:

我终于设法实现onTouchACTION_MOVE如下,使按钮成为触摸和拖动:

  button_test= (Button) findViewById(R.id.button_test);
  button_test.setOnTouchListener(new OnTouchListener()
                 
      private float x, y;    
      private int mx, my;             
      public boolean onTouch(View v, MotionEvent event) 
          
          switch(event.getAction()) 
               
          case MotionEvent.ACTION_DOWN:    
              x = event.getX();    
              y = event.getY();    
          case MotionEvent.ACTION_MOVE:    
              mx = (int)(event.getRawX() - x);    
              my = (int)(event.getRawY() - 50 - y);    
              button_test.setX(mx);
              button_test.setY(my);

              break;    
              
          return true;    
      ); 

【讨论】:

以上是关于android:按下按钮并跟随手势的主要内容,如果未能解决你的问题,请参考以下文章

Android 跟随 iPhone X,手势操作成为未来?

Android按钮选择并按下drawable

Android -- 手势操作识别

Android:如何在按下按钮时关闭一个活动并在按下另一个按钮时关闭整个后台堆栈? [复制]

Flutter:带有数据的 iOS 向后滑动手势

Android-用单指手势旋转图像