У меня есть основной FrameLayout и коллекция шаров 5 на 7 (каждый вид) под ним. Я добавил onTouchEvent () для переключения цветов. Но независимо от того, на какой шар я нажимаю, только нижний правый шар реагирует на мое касание (это был последний, который был нарисован). Есть ли способ заставить каждый шар распознавать свое событие касания?
Мысль: я думаю, что это может произойти, потому что я вставляю каждый шар (вид) в основной FrameLayout, который должен показывать только одну вещь за раз. Я думаю, что это как стек просмотров, и только самый верхний отвечает. Есть идеи?
в классе Ball
public class Ball extends View {
private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
...
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(x, y, r, mPaint);
}
public boolean onTouchEvent(MotionEvent event) {
int eventAction = event.getAction();
if(eventAction == MotionEvent.ACTION_DOWN) {
switchcolor();
this.postInvalidate();
return true;
} else {
return false;
}
}
private void switchcolor() {
mPaint.setColor(touched ? 0xFFFFFFFF : 0xFFA606E2);
touched = !touched;
}
в основной деятельности
FrameLayout main = (FrameLayout) findViewById(R.id.main_view);
...
some loop {
main.addView(new Ball(this, x, y, radius - margin));
}