Android - 检测onTouchListener的问题

时间:2011-04-06 21:33:41

标签: android listener ontouchlistener

所以我有一个customdrawableview应用于我的活动。

我正在尝试实现动作侦听视图,以便我可以在不同位置检测不同的触摸事件。但是,我似乎甚至没有得到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;
    }

那么我做错了什么?

3 个答案:

答案 0 :(得分:1)

要获得多点触摸事件,您应该使用方法getX(int指针)和getY(int指针)来返回每个触摸点的位置。

您可以使用getPointerCount()方法知道屏幕上有多少个手指。

(来自MotionEvent的方法)

此外,只有当手指第一次触摸时才会触发ACTION_DOWN,如果它被拖动,则下一个事件将是ACTION_MOVE。

您要覆盖onTouch(查看arg0,MotionEvent arg1),但要从正在创建的视图中侦听触摸事件,您应该覆盖onTouchEvent(MotionEvent evt)。

答案 1 :(得分:0)

目前你的班级只实现了界面。您必须通过调用此方法将OnTouchListener注册到您的视图。setOnLongClickListener(this)

答案 2 :(得分:0)

CustomDrawableView

的构造函数中添加侦听器注册