У меня есть класс с именем точка, и многие экземпляры этого же класса создаются при запуске приложения. Проблема в том, что мне нужно иметь возможность щелкнуть один из экземпляров этого класса, чтобы выбранный экземпляр менял только цвета.
Проблема в том, что всякий раз, когда я нажимаю на один из точек, все они меняют цвет, а не только тот, на который я нажал.
Вот код:
package com.ewebapps;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;
public class Dot extends View {
private final float x;
private final float y;
private final int r;
private final Paint mBlack = new Paint(Paint.ANTI_ALIAS_FLAG);
private final Paint mWhite = new Paint(Paint.ANTI_ALIAS_FLAG);
private final Paint mGreen = new Paint(Paint.ANTI_ALIAS_FLAG);
private boolean touched;
public Dot(Context context, float x, float y, int r) {
super(context);
mBlack.setColor(0xFF000000); //Black
mWhite.setColor(0xFFFFFFFF); //White
mGreen.setColor(0xFF00FF00); //Green
this.x = x;
this.y = y;
this.r = r;
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) { // On touch.
touched = true;
//mPaint.setColor(0xFF00FF00); // Turn dot green.
this.invalidate();
return super.dispatchTouchEvent(event);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(x, y, r+2, mWhite); //White stroke.
if(!touched)
{
canvas.drawCircle(x, y, r, mBlack); //Black circle.
}
else
{
canvas.drawCircle(x, y, r, mGreen); //Green circle.
}
}
}