import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // MyView mv = new MyView(this)
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
  setContentView(new MyView(this));
 }
}

class MyView extends View {
 private float X;
 private float Y;
 private float prevX = -1;
 private float prevY = -1;
 private int rw = 0;
 private int rh = 0;
 private int width;
 private int height;
 private Rect rect;
 private static boolean Flag1 = false;

 Bitmap backBmp;
 Paint pnt = new Paint();

 public MyView(Context context) {
  super(context);
  setBackgroundColor(Color.WHITE);
  backBmp = BitmapFactory.decodeResource(getResources(),
    R.drawable.yellow2);
  pnt.setStyle(Paint.Style.STROKE); //사각형테두리
  pnt.setColor(Color.YELLOW);
  Display display = ((WindowManager) context.getSystemService(
    Context.WINDOW_SERVICE)).getDefaultDisplay();
  width = display.getWidth();
  height = display.getHeight();
 }

 @Override
 protected void onDraw(Canvas canvas) {

  // canvas.drawColor(Color.WHITE);
  canvas.drawBitmap(backBmp, X, Y, null);
  rw = backBmp.getWidth() /2;
  rh = backBmp.getHeight() /2;
  pnt.setStrokeWidth(3); //테두리 두께
  rect = new Rect(12, 300, 100, 380); //사각형 영역
  canvas.drawRect(rect, pnt); // 테두리 사각형 그림
  super.onDraw(canvas);
 }

 public boolean onTouchEvent(MotionEvent event) {
  float X = event.getX();
  float Y = event.getY();

  switch (event.getAction()) {
  case MotionEvent.ACTION_DOWN:
   if (X > this.X && X < this.X + backBmp.getWidth() && Y > this.Y
     && Y < this.Y + backBmp.getHeight()) {
 
    Flag1 = true;
    Log.d("TAG", "Flag = true");
   }
   break;
  case MotionEvent.ACTION_MOVE: 
   Log.d("TAG", "Flag = " + Flag1);
   if(Flag1 == true) {
    if (prevX > 0 && prevY > 0) {
     this.X += X - prevX;
     this.Y += Y - prevY;
    }
    prevX = X;
    prevY = Y; 
   }
   break;
  case MotionEvent.ACTION_UP:
   Flag1 = false;   
   Log.d("TAG", "Flag = false");
   if(X < rw) {
    X = rw;
    prevX = -prevX;
   }
   if(X > width - rw) {
    X = width - rw;
    prevX = -prevX;
   }
   if(Y < rh) {
    Y = rh;
    prevY = -prevY;
   }
   if(Y > height - rh) {
    Y = height - rh;
    prevY = -prevY;
   }
 };
 invalidate();
 return Flag1;
}
}

 

제가 터치이벤트 소스를 짜는데

도형이미지가 화면을 벗어나버려서...

뭔가 좀 이상하게 되었네요 ㅠㅠ

실행은 되는데 이미지 좌표의 가로세로 식을 잘못 쓴거 같은데

어떻게해야할까요??