所以我有一个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;
}
那么我做错了什么?
答案 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
类