我有一個主要的FrameLayout和5個7(每個視圖)下的球集合。我添加了onTouchEvent()來切換顏色。但無論我點擊哪一個球,只有右下角的球響應我的觸摸事件(這是最後一個繪製的)。有沒有辦法讓每個球識別自己的觸摸事件?Android,屏幕上有多個視圖,但只有一個會響應觸摸
一個想法:我認爲這可能是因爲我將每個球(一個視圖)插入到主要的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));
}
這一切都很好,但您的觸摸偵聽器代碼在哪裏? – dmon 2011-06-02 00:06:07
@dmon oops我忘了。它現在在那裏。 :) – chizzle 2011-06-02 00:24:32
Errrr ...和'switchcolor()'?基本上我們需要遵循流程貫穿始終。 – dmon 2011-06-02 00:27:49