제가 아주 간단하게 동그란 그림을 공처럼 움직이게 하고싶은데요
좌표를 통해서 ↘ ↗ 이렇게 움직이게 하고 밑에 충돌이 되면 뭔가 토스트를 띄우고 싶습니다.
토스트는 구현을 하면 되겠는데 제가 어떻게 터치로 좌표값을 얻어서 직선으로 움직이게 하고 싶은데 직선방정식을 구하자니 터치로 일일히 좌표 다 계산해서 하는 것도 완전 생 노가다 같은데요 ㅡ ㅡ;;
코드로 어떻게 직선으로 움직이게 가능 할까요 충돌할 때는 어떻게 해야 할 지 모르겠습니다 ㅜ_ㅜ 간단하게 책보고 짜본 코드입니다.
공이 직선으로 움직이게 하는 자체는 뭘 써야하는건가요?
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();
}
}
}