2011-04-06 69 views
3

所以我有一個customdrawableview應用於我的活動。Android - 問題檢測onTouchListener

我試圖進行運動聽視圖,這樣我可以檢測不同的地點不同的觸摸事件。不過,我似乎甚至沒有得到Touch Down的迴應。

這裏是我的代碼的相關部分:

public class CustomDrawableView extends View implements OnTouchListener 
{  
    public CustomDrawableView(Context context) 
    { 
     super(context);   
    } 

    @Override 
    protected void onDraw(Canvas canvas) 
    { 
     super.onDraw(canvas); 
     mDrawBackGround(canvas); 
     mDrawHexPanel(canvas); 
     mDrawHuePanel(canvas); 
     mDrawGreyScaleHexPanel(canvas); 
     mDrawHuePointer(canvas); 
    } 

    @Override 
    public boolean onTouch(View CustomDrawableView, MotionEvent event) 
    { 
     float touchX = event.getX(); 
     float touchY = event.getY(); 

     switch (event.getAction()) 
     { 
      case MotionEvent.ACTION_DOWN: 


        pointerTouch=true; 
        cpRed=255; 
        cpGreen=108; 
        cpBlue=0;       
        invalidate();      
        break; 
     } 
     return true; 
    } 

那我做錯了嗎?

+0

您確實註冊了偵聽器嗎? – 2011-04-06 21:40:23

回答

1

爲了得到多點觸摸事件,你應該使用它返回每個觸摸點的位置的方法的getX(INT指針)和的getY(INT指針)。

您可以知道有多少手指在屏幕上與法getPointerCount()。

(從MotionEvent方法)

此外,ACTION_DOWN被解僱,只有當首次手指觸摸,如果它是阻力,下一個事件將是ACTION_MOVE。

您正在重寫onTouch(View arg0,MotionEvent arg1),但要從您創建的View偵聽觸摸事件,您應該重寫onTouchEvent(MotionEvent evt)。

+0

馬科斯是完全正確的,特別是關於最後一部分。並且記住,如果您想對觸摸事件的座標進行操作,您的變量touchX和touchY將返回事件的座標。另外,當您將手指從屏幕上移開時,會發生ACTION_UP。祝你好運! – Amplify91 2011-04-06 21:45:57

+0

看起來我實際上是在爲自己過度複雜的事情,現在我非常感謝你,我知道它在工作,我可以從那裏開始工作。 – Phil 2011-04-06 22:35:01

0

CustomDrawableView類的構造函數中添加偵聽器註冊