0

タッチリスナーが機能しません。画像を画面上にドラッグして、前の位置にドロップする必要があります。

そのために、私は以下のようにコードを書きます:

class Mylistener implements OnTouchListener{

        @Override
            public boolean onTouch(View v, MotionEvent event) {
             MarginLayoutParams marginParams = new MarginLayoutParams(v.getLayoutParams()); 
              layoutParams2 = (RelativeLayout.LayoutParams) v.getLayoutParams();


                //int left=0,top=0;
                switch(event.getActionMasked())
                {
                    case MotionEvent.ACTION_DOWN:
                         startx=(int) event.getRawX();
                         starty=(int) event.getRawY();
                         System.out.println("ACTION DOWN: "+startx+","+starty);
                        break; 
                    case MotionEvent.ACTION_MOVE:


                       int  left = (int) event.getRawX() - (v.getWidth() / 2);
                      int top = (int) event.getRawY() - (v.getHeight());
                     marginParams.setMargins(left, top, 0, 0);
                     RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
                     v.setLayoutParams(layoutParams); 

                        break;

                    case MotionEvent.ACTION_UP:

                         marginParams.setMargins(startx, starty, 0, 0);
                         layoutParams2 = new RelativeLayout.LayoutParams(marginParams);
                         System.out.println("ACTION UP: "+startx+","+starty);

                         v.setLayoutParams(layoutParams2); 
                    default:
                        break;
                }
                return true;
            }

    }

ただし、画面上をドラッグし、前の位置にドロップしません。助けてください

4

1 に答える 1

2

Ur ACTION_DOWN イベントでは、タッチされた imageView の座標を次のように記録します。

// Global Declarations
float v_origX,v_origY; // Used for original X and Y of ImageViews

case MotionEvent.ACTION_DOWN:
{
.....
v_origX=v.getX();
v_origY=v.getY();
}

そしてACTION_UPイベントで、

case MotionEvent.ACTION_UP:
{
if(condition_fulfilled)
{
 // do ur stuff
}
else
{
// set the imageView back to original position
v.setX(v_origX);
    v.setY(v_origY);
}

}
于 2013-09-19T10:22:04.897 に答える