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;
}
}
제가 터치이벤트 소스를 짜는데
도형이미지가 화면을 벗어나버려서...
뭔가 좀 이상하게 되었네요 ㅠㅠ
실행은 되는데 이미지 좌표의 가로세로 식을 잘못 쓴거 같은데
어떻게해야할까요??