两个矩形,拖动其中一个矩形向另外一个移动,当发生碰撞时两个矩形同时变为红色:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.support.v4.app.NotificationCompatSideChannelService;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
/**
* Created by lijia on 2017/5/25.
*/
public class lesson6 extends SurfaceView implements SurfaceHolder.Callback,Runnable {
private int bx,by,dx,dy,rw,rh;
private Canvas canvas;
private Paint paint1,paint2;
private Thread th;
private boolean runFlag;
private SurfaceHolder sfh;
private Rect rect1,rect2;
public lesson6(Context context) {
super(context);
sfh=this.getHolder();
sfh.addCallback(this);
paint1=new Paint();
paint2=new Paint();
bx=100;
by=100;
rw=200;
rh=200;
dx=0;
dy=0;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
th=new Thread(this);
runFlag=true;
th.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public void run() {
while(runFlag)
{
gameDraw();
}
}
public void gameDraw()
{
canvas=sfh.lockCanvas();
canvas.drawColor(Color.WHITE);
rect1=new Rect(bx,by,bx+rw,by+rh);
rect2=new Rect(300,300,500,500);
paint1.setColor(Color.GREEN);
canvas.drawRect(rect2,paint2);
if (rect2.intersect(rect1))
{
paint1.setColor(Color.RED);
canvas.drawRect(bx,by,bx+rw,by+rh,paint1);
paint2.setColor(Color.RED);
canvas.drawRect(rect2,paint2);
}else
{
paint1.setColor(Color.BLUE);
// rect1=new Rect(bx,by,bx+rw,by+rh);
canvas.drawRect(rect1,paint1);
paint2.setColor(Color.GREEN);
canvas.drawRect(rect2,paint2);
}
sfh.unlockCanvasAndPost(canvas);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Rect r=new Rect(bx,by,bx+rw,by+rh);
if(r.contains((int)event.getX(),((int)event.getY())))
{
if (event.getAction()==MotionEvent.ACTION_MOVE)
{
bx=dx+(int)event.getX();
by=dy+(int)event.getY();
}else
{
dx=bx-(int)event.getX();
dy=by-(int)event.getY();
}
}
return true;
}
}