제가 아주 간단하게 동그란 그림을 공처럼 움직이게 하고싶은데요

좌표를 통해서 ↘  ↗ 이렇게 움직이게 하고 밑에 충돌이 되면 뭔가 토스트를 띄우고 싶습니다.

토스트는 구현을 하면 되겠는데 제가 어떻게 터치로 좌표값을 얻어서 직선으로 움직이게 하고 싶은데 직선방정식을 구하자니 터치로 일일히 좌표 다 계산해서 하는 것도 완전 생 노가다 같은데요 ㅡ ㅡ;;

코드로 어떻게 직선으로 움직이게 가능 할까요 충돌할 때는 어떻게 해야 할 지 모르겠습니다 ㅜ_ㅜ 간단하게 책보고 짜본 코드입니다.
 
공이 직선으로 움직이게 하는 자체는 뭘 써야하는건가요?


package com.example.graphicDemo03;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Point;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;

public class GraphicDemo extends Activity {
    private float oldPosX = 1;
    private float oldPosY = 1;
   
    private DraggableImageView and_img;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE); // 타이틀바 제거
        super.onCreate(savedInstanceState);
        // 커스텀뷰 설정
        and_img = new DraggableImageView(this);
        // 이미지뷰 추가
        setContentView(and_img);
    }
  
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch(event.getAction())
        {
        case MotionEvent.ACTION_DOWN :
            oldPosX = (int)event.getX();
            oldPosY = (int)event.getY();
            break;
        case MotionEvent.ACTION_UP :
            break;
        case MotionEvent.ACTION_MOVE :
            and_img.setNewPosition((int) (event.getX() - oldPosX), (int) (event.getY() - oldPosY));
            oldPosX = (int)event.getX();
            oldPosY = (int)event.getY();
            break;
        }
        return true;
    }

    private static class DraggableImageView extends View {        
        private Point curPoint = null;
        private Bitmap bitmap = null;
       
        public DraggableImageView(Context context) {
            super(context);
            setFocusable(true);
           
            curPoint = new Point();
            curPoint.x = 1;
            curPoint.y = 1;
            setImage(context);
        }
       
        public DraggableImageView(Context context, int height, int width) {
            super(context);
        }
       
        public void setImage(Context context) {
            // Drawable 이미지 임시로 지정하여 리싸이즈
            Bitmap bitmapOrg = BitmapFactory.decodeResource(context.getResources(),R.drawable.one);  // 이미지화일
            int width = bitmapOrg.getWidth();
            int height = bitmapOrg.getHeight();
            int newWidth = 50;
            int newHeight = 50;
            float scaleWidth = ((float) newWidth) / width;
            float scaleHeight = ((float) newHeight) / height;
           
            Matrix matrix = new Matrix();
            matrix.postScale(scaleWidth, scaleHeight);
            bitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,width, height, matrix, true);
        }
       
        @Override
        protected void onDraw(Canvas canvas) {
            canvas.drawBitmap(bitmap, curPoint.x, curPoint.y, null);
        }

        public void setNewPosition(int newPosX, int newPosY) {
            curPoint.x += newPosX;
            curPoint.y += newPosY;
            Log.i("Graphic Debug", "Point has changed to x:["+ curPoint.x + "]" + "y:[" + curPoint.y + "]");
            invalidate();
        }
    }
}