2015-08-12 5 views
0

Я работаю над Android-приложением, где я хотел бы, чтобы пользователь мог перетащить палец на экран и иметь объект, который я настроил как изображение (самолет), следую Это. У меня есть несколько работающая модель этого прямо сейчас, когда изображение пойдет в точку, которая касается экрана, но это не совсем то, что я ищу. Также каждый раз, когда пользователь прикасается к новой точке, мое изображение возвращается к исходному месту, а затем переходит к точке касания пользователей. Это соответствующий код:Выполнение ImageView следует за сенсорной точкой на экране

public boolean onTouch(View v, MotionEvent e){ 
    switch (e.getAction()){ 
     case MotionEvent.ACTION_DOWN: 
     { 

     } 
     case MotionEvent.ACTION_UP: 
     { 
      float x = e.getX(); 
      float y = e.getY(); 
      movePlane(x, y); 
     } 
     case MotionEvent.ACTION_MOVE: 
     { 

     } 
    } 
    return true; 
} 

private boolean movePlane(float endX, float endY){ 
    ImageView plane = (ImageView) findViewById(planeID); 
    float startX = plane.getX(); 
    float startY = plane.getY(); 
    TranslateAnimation animation = new TranslateAnimation(startX, endX, startY, endY); 
    animation.setDuration(3000); 
    animation.setFillAfter(true); 
    animation.setFillEnabled(true); 
    plane.startAnimation(animation); 

    return true; 
} 

Так что я знаю, что я, вероятно, буду работать внутри корпуса ACTION_DOWN, но я точно не знаю, как я должен быть обработкой события и ImageView соответственно. Любая помощь действительно ценится.

ответ

1

Здесь вы можете использовать params.x и params.y, так как координаты x, y вы передаете методу movePlane. Надеюсь, поможет.

Есть много, чтобы прочитать по этой ссылке, поэтому подумал, что лучше я разместил здесь важный код. Ниже приведен код, который вы можете использовать.

plane.setOnTouchListener(new View.OnTouchListener() { 
    private int initialX; 
    private int initialY; 
    private float initialTouchX; 
    private float initialTouchY; 

@Override public boolean onTouch(View v, MotionEvent event) { 
switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
    initialX = params.x; 
    initialY = params.y; 
    initialTouchX = event.getRawX(); 
    initialTouchY = event.getRawY(); 
    return true; 
    case MotionEvent.ACTION_UP: 
    return true; 
    case MotionEvent.ACTION_MOVE: 
    params.x = initialX + (int) (event.getRawX() - initialTouchX); 
    params.y = initialY + (int) (event.getRawY() - initialTouchY); 
    movePlane(params.x, params.y); 
    return true; 
} 
return false; 
} 
}); 

Самолет - это, конечно же, ImageView, который вы хотите перетащить. Вы можете сослаться на link, если хотите, я взял ссылку на него.

+0

Это похоже на то, что я пытаюсь сделать, спасибо! – atg963

1

вы должны установить значения x и y после анимации с помощью AnimationListener -> onAnimationFinished, чтобы избежать «Также каждый раз, когда пользователь прикасается к новой точке, мое изображение возвращается к исходному месту, а затем переходит к пользователям touch point "вещь.