2010-09-07 107 views
0

我想在屏幕上識別觸發觸摸事件

FrameLayout main = (FrameLayout) findViewById(R.id.main_view); 
final Ball bigball; 
bigball = new Ball(this,50,50,25, 0xFFFF0000); 
main.addView(bigball); 

這畫我的屏幕上的紅色圓圈拖動視圖的視圖。如果我需要如何以及在哪裏實現我的觸摸屏處理,如果我想讓只有纔會觸發紅色圓圈而不是屏幕的其餘部分?

Ball.Java是一個單獨的類:

public class Ball extends View 

我知道我可以檢查所在的座標使用者的觸摸屏幕,然後比較,爲那裏的圓,但必須有一個辦法簡單地檢查ID或圓的其他參考,對吧?

到目前爲止,我已經看過並嘗試過的所有內容都會運行我的代碼,而不管觸摸在屏幕上的何處開始或停止。 (所以我可以移動球,我可以用手指和任何東西在屏幕上畫線,但我不知道是否觸摸了紅色圓圈。)

任何人都可以用簡單的語言將其展開給我嗎? (原諒我在我的問題中使用同樣簡單的單詞,我不再覺得自己在這裏做了什麼,而現在我也不會再正確地使用像「聽衆」或「事件」這樣的大詞。

感謝。

回答

0

可以覆蓋/在從搜索擴展Ball類實現的onTouchEvent。

public class Ball extends View { 
    public boolean onTouchEvent(MotionEvent ev) { 
    if(ev.getAction == /*check against all the desired action*/ { 
     //handle touch and return true 
    return super.onTouchEvent(ev); 
}

+0

是的,我tohght這應該工作了。 – Alex 2010-09-07 08:59:59

+0

但無論在哪裏,我點擊調用該函數。是否有可能我的球只是佔據了整個屏幕,並且我一直在追逐錯誤類型的錯誤? 這是一個在畫布上繪製的ciclre: – Alex 2010-09-07 09:02:42

+0

public class Ball extends View { private float x; 私人浮動y; private final int r; private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); (上下文上下文,float x,float y,int r,int bcolor){super(context);}};}}}}}}}。 mPaint.setColor(bcolor); this.x = x; this.y = y; this.r = r; } @Override protected void onDraw(Canvas canvas){ super.onDraw(canvas); canvas.drawCircle(x,y,r,mPaint); – Alex 2010-09-07 09:03:38