2017-03-27 16 views
0

我需要根據用戶的觸摸手勢來移動,旋轉和調整edittext的大小。在android中移動,旋轉和調整edittext的內容

這是我在做什麼。 1.偵聽ACTION_DOWN事件以檢測單指觸摸,然後使用它進行移動。

  1. 偵聽ACTION_POINTER_DOWN,並獲取索引計數以檢測兩個手指觸摸,然後使用ACTION_MOVE進行旋轉。

  2. 我需要進行調整大小的工作,只有通過觸摸來調整大小的寬度纔會減少。我對着 運動

問題是工作完全正常。但是當我使用ACTION_POINTER_DOWN應用旋轉時,旋轉會出現各種各樣的干擾。有關如何使視圖移動和旋轉一起工作的任何建議?

這裏是我已經申請

tvMain.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 


      switch (event.getAction() & MotionEvent.ACTION_MASK) { 
       case MotionEvent.ACTION_DOWN: 
        moving = true; 
        break; 

       case MotionEvent.ACTION_POINTER_DOWN: 

        Log.d("ActionPointerIndex", "" + event.getActionIndex()); 
        int index = event.getActionIndex(); 
        moving = false; 

        //FOR ROTATION DETAILS 
        xc = tvMain.getWidth()/2; 
        yc = tvMain.getHeight()/2; 

        x_ = event.getX(); 
        y_ = event.getY(); 

        Log.d("currentAnglePD", ": " + x_ + "," + y_); 
        if (index == 1) { 
         rotate = true; 
         mCurrAngle = Math.toDegrees(Math.atan2(x_ - xc, yc - y_)); 
         moving = false; 
        } 
        break; 

       case MotionEvent.ACTION_MOVE: 

        if (moving) { 
         leftBound = rootView.getX(); 
         topBound = rootView.getY(); 
         rightBound = rootView.getX() + 1280; 
         bottomBound = rootView.getY() + 618; 


         x = event.getRawX() - tvMain.getWidth()/2; 
         y = event.getRawY() - tvMain.getHeight(); 

         dx = Float.valueOf(rootView.getWidth() - tvMain.getWidth()); 
         dy = Float.valueOf(rootView.getHeight() - tvMain.getHeight()); 

         bottomBound_ = tvMain.getY() + tvMain.getHeight(); 
         rightBound_ = tvMain.getX() + tvMain.getWidth(); 

         if (x >= leftBound && y >= topBound && x <= dx && y <= dy) { 
          tvMain.setX(x); 
          tvMain.setY(y); 
         } 
        } 

        if (rotate) { 

         Log.d("currentAngleMove", ": " + x_ + "," + y_); 

         mPrevAngle = mCurrAngle; 
         mCurrAngle = Math.toDegrees(Math.atan2(x_ - event.getX(), yc - event.getY())); 
         animate(mPrevAngle, mCurrAngle, 0); 
         System.out.println(mCurrAngle); 
        } 

        break; 

       case MotionEvent.ACTION_POINTER_UP: 
        rotate = false; 
        break; 

       case MotionEvent.ACTION_UP: 
        rotate = false; 
        moving = false; 
        //tvMain.clearAnimation(); 
        break; 
      } 

      return true; 
     } 
    }); 

運動正在罰款touchListener的代碼,但是當我移動視圖,旋轉進入瘋狂,它不沿其中心旋轉。一旦我停止旋轉,視圖停止監聽更多的觸摸手勢。

+0

請提供幫助代碼。 – Kriti

+0

@Kriti請檢查編輯 – SagePawan

回答

0

從你身邊沒有代碼,但看看這個鏈接:

Sensey Library

這無疑將是對你有用解決您的問題。

+0

請檢查編輯一次 – SagePawan