2016-12-02 11 views
0

座標を元の位置に戻そうとしていますが、私はそれを行うべきだと考えています。OnTouchListenerを終了した後にTextviewのXY座標をリセットできません。

num1.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     startX = num1.getX(); // num1 is a TextView 
     startY = num1.getY(); // here I am trying to get the original coordinates 

     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       x = event.getRawX(); 
       y = event.getRawY(); 
       break; 

      case MotionEvent.ACTION_MOVE: 
       x = event.getRawX(); 
       y = event.getRawY(); 
       num1.setX(x - 100); 
       num1.setY(y - 250); // "y - 250" keeps the textview under finger 
       apple1.setX(x - 100); 
       apple1.setY(y - 250); 
       break; 

      case MotionEvent.ACTION_UP: 
       if (((num1.getX() >= basket1.getX()) && (num1.getX() < basket2.getX())) && (event.getRawY() > linearLayout.getY())) { 
        basket1Num = String.valueOf(num1.getText()); 
        basket1Text.setText(basket1Num); 
       } else if (((num1.getX() >= basket2.getX()) && (num1.getX() > basket1.getX())) && (event.getRawY() > linearLayout2.getY())) { 
        basket2Num = String.valueOf(num1.getText()); 
        basket2Text.setText(basket2Num); 
       } else { 
        num1.setX(startX); // if the user has moved it somewhere other than the basket the TextView should go back. 
        num1.setY(startY); 
       } 
     } 
     return true; 
    } 
}); 

そこで、基本的NUM1は、TextViewのある私は開始位置を取得しようとしていますスイッチの上: は、ここに重要なコードです。ユーザーがTextViewをバスケット画像に配置しないと、元の位置に戻ることができます。私は、開始xyの位置を収集し、それらの位置に戻すように設定するアプリにそれを行うが、それはゼロ効果があると言っています。どんな助けも素晴らしいだろう。

ありがとうございました!

EDIT:Apple1は、あなたが開始座標をNum1をTextViewに

答えて

0

にタッチイベントが発生するたびに、次のImageViewの設定されています。つまり、ドラッグすると、現在の位置に座標がリセットされます。開始座標が何であったかの状態が失われます。

ドラッグを開始すると、開始座標が設定されます。下の例では、開始座標をどこに設定するかをちょうどACTION_DOWNに変更しました。それはあなたが押し下げると一度解雇されます。

num1.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       startX = num1.getX(); // num1 is a TextView 
       startY = num1.getY(); // here I am trying to get the original coordinates 

       x = event.getRawX(); 
       y = event.getRawY(); 
       break; 

      case MotionEvent.ACTION_MOVE: 
       x = event.getRawX(); 
       y = event.getRawY(); 
       num1.setX(x - 100); 
       num1.setY(y - 250); // "y - 250" keeps the textview under finger 
       apple1.setX(x - 100); 
       apple1.setY(y - 250); 
       break; 

      case MotionEvent.ACTION_UP: 
       if (((num1.getX() >= basket1.getX()) && (num1.getX() < basket2.getX())) && (event.getRawY() > linearLayout.getY())) { 
        basket1Num = String.valueOf(num1.getText()); 
        basket1Text.setText(basket1Num); 
       } else if (((num1.getX() >= basket2.getX()) && (num1.getX() > basket1.getX())) && (event.getRawY() > linearLayout2.getY())) { 
        basket2Num = String.valueOf(num1.getText()); 
        basket2Text.setText(basket2Num); 
       } else { 
        num1.setX(startX); // if the user has moved it somewhere other than the basket the TextView should go back. 
        num1.setY(startY); 
       } 
     } 
     return true; 
    } 
}); 
+0

ああ、私の馬鹿だった、私は彼らの指/マウスを持っていたと思ったが、それはACTION_DOWNを発射するだろう、ありがとう! –

関連する問題