I have 2 circles, one drawn in the center of the screen and one that I move. What I want to do is that the circles do not overlap when I move one over another. I managed to do something similar but it is horrible, I wanted to know if there is a more efficient way to achieve it.
Thank you.
public class Juego extends SurfaceView implements View.OnTouchListener{
private Paint paint;
int x = 100, y = 100, radio = 100, otroX, otroY;
public Juego(Context context, AttributeSet attrs) {
super(context, attrs);
this.setOnTouchListener(this);
setFocusable(true);
paint = new Paint();
}
public void onDraw(Canvas canvas) {
paint.setColor(Color.WHITE);
canvas.drawRect(0, 0, getWidth(), getHeight(), paint);
paint.setColor(Color.BLACK);
canvas.drawCircle(x, y, radio, paint);
otroX = canvas.getWidth() / 2;
otroY = canvas.getHeight() / 2;
canvas.drawCircle(otroX, otroY, radio, paint);
invalidate();
}
@Override
public boolean onTouch(View view,MotionEvent motionEvent){
x = (int)motionEvent.getX();
y = (int)motionEvent.getY();
double dist = Math.sqrt(Math.pow((x - otroX), 2) + Math.pow((y - otroY), 2));
if (dist <= radio + radio) {
if (x < otroX) {
x = otroX - radio - (radio / 2);
}
if (x > otroX) {
x = otroX + radio + (radio / 2);
}
if (y < otroY) {
y = otroY - radio - (radio / 2);
}
if (y > otroY) {
y = otroY + radio + (radio / 2);
}
}
invalidate();
return true;
}
}
This is what I have: link
and this is how I would like it to be: link