package com.ewebapps;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
public class Dot extends View {
private final float x;
private final float y;
private final int r;
private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private final Paint mWhite = new Paint(Paint.ANTI_ALIAS_FLAG);
public Dot(Context context, float x, float y, int r) {
super(context);
mPaint.setColor(0xFF000000); //Black
mWhite.setColor(0xFFFFFFFF); //White
this.x = x;
this.y = y;
this.r = r;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(x, y, r+2, mWhite); //White stroke.
canvas.drawCircle(x, y, r, mPaint); //Black circle.
}
}
回答
嗯......創建自己的觀點時,最好的方式來實現這一目標被重寫dispatchTouchEvent
方法。相信我,使用setOnTouchListener
和onTouchEvent
在某些情況下效果不佳。這就是你需要做的所有事情View
:
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
// put your logic here
return super.dispatchTouchEvent(event);
}
因此,使用這種方法我能夠測試我在邏輯中點擊了哪個類的實例? (我有很多這些類正在創建,我需要能夠分辨哪個被點擊。)感謝大家的幫助!其他地方的其他人都無法回答我的問題! – Eweb 2010-11-02 05:12:50
當然,您可以知道該類的哪個實例被點擊了,畢竟,您在邏輯部分中所做的全部屬於該實例。我認爲你可以使用觀察者設計模式來完成你的目標,所以繼續前進,搖滾! – Cristian 2010-11-02 05:20:22
非常感謝我到目前爲止嘗試了所有這些答案,而你的工作就是這樣。有一件事,無論如何,這是一個「私人」布爾值,以便該對象的所有其他實例不會收到我this.invalidate();呼叫? (當它重新繪製一個新的精靈。) – Eweb 2010-11-02 21:31:07
View aView = (View)findViewById(R.id.DotView);
aView.setOnTouchListener(this);
如果我有更多的點視圖,我可以通過使用你的方法來確定哪個點擊了嗎?謝謝您的幫助! – Eweb 2010-11-02 05:15:48
是的,聽衆傳遞給你視圖對象 – 2010-11-02 05:27:31
亞倫桑德斯的答案適用於視圖(如按鈕),因爲只有onTouchListener告訴你被點擊了什麼看法,而不是確切位置。如果您需要確切地知道該事件是不創建按鈕試試這個在您的活動類:
@Override onTouchEvent(MotionEvent event) { int _x = event.getX();
int _y = event.getY(); // do stuff }
注:當事件不是由視圖處理的onTouchEvent只調用。
Documentation
(誰能告訴我如何添加換行符?)
- 1. 任何人都知道WeakReferenceCollection持有監聽器
- 2. SVGPan - 任何人都知道ios觸摸事件支持?
- 3. 任何人都知道ACTION_RF_FIELD_ON_DETECTED?
- 4. 任何人都知道Rhomobile?
- 5. 任何人都知道VRTX
- 6. 任何人都知道DirectoryEntry.Invoke
- 7. 任何人都知道如何解決這個錯誤突破?
- 8. Android觸摸監聽器?
- 9. 的onLoad監聽器添加到煎茶觸摸列表
- 10. 任何人都知道如何實現這種「升力」效應?
- 11. 請任何人都知道如何將兩個結果集填充到gridview中
- 12. 任何人都知道如何添加一個jQuery UI主題的回調?
- 13. 觸摸多個Textviews的監聽器?
- 14. 觸摸監聽器和長按聽衆
- 15. Android - 如果視圖有點擊監聽器,如何檢測觸摸監聽器
- 16. Xamarin ListActivity onTouchEvent(或任何其他觸摸監聽器)
- 17. 任何人都知道這個解決方案?
- 18. 任何人都知道這個網格控制的manufacterer?
- 19. 任何人都知道如何繼承擴展類的父項?
- 20. 任何人都知道如何在QueryForTable中縮小這個查詢(使用Parse.com)
- 21. 如何添加點擊監聽器到谷歌地圖道路?
- 22. 任何人都知道的.NET序列化類編輯器?
- 23. AFrame:如何將觸摸事件偵聽器添加到實體中
- 24. 任何人都知道如何解決選擇器錯誤?
- 25. 任何人都知道任何Linq到XQuery的實現?
- 26. 任何人都知道像PHP的RSPec?
- 27. 任何人都知道Click Framework?
- 28. 任何人都知道Objective-C Stylus Parser?
- 29. 任何人都知道任何資源用於添加自己的語言到Visual Studio 2010,這是不管理?
- 30. 如何在Cocos2dx 3.1中添加觸摸事件偵聽器?
你想知道屏幕已被點擊或被點擊嗎? – John 2010-11-02 01:05:08
我有很多這些類被一個計時器點擊,我需要能夠告訴他們哪個被點擊。 – Eweb 2010-11-02 05:10:21