2
我试图用TouchEvent做一个简单的自定义视图。但是,如果我点击n拖动鼠标光标没有画任何东西。这是我应该在模拟器上测试TouchEvent的方式吗?或者我应该在真正的设备上运行应用程序(它也不工作)。感谢名单自定义视图触摸事件不起作用
public class TouchEventView extends View {
private Paint paint = new Paint();
private Path path = new Path();
public TouchEventView(Context context, AttributeSet attrs) {
super(context, attrs);
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeWidth(5f);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawPath(path, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float eventX = event.getX();
float eventY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(eventX, eventY);
return true;
case MotionEvent.ACTION_MOVE:
path.lineTo(eventX, eventY);
break;
case MotionEvent.ACTION_UP:
// nothing to do
break;
default:
return false;
}
// Schedules a repaint.
invalidate();
return true;
}
}
尝试投掷'Log.d(”调用“,”Action Down“);','Log.d(”DEBUG“,”Action Move“);'和Log.d(”DEBUG“,”Action Up“);'你可以确定你的触摸事件正在被捕获...... – Rawr
http://developer.android.com/guide/topics/ui/custom-components.html提及'扩展onDraw()和onMeasure()'。 onMeasure()是否适合您的视图? (猜不到) – sandrstar
是的,我做了,事件被捕获得很好。 – Tanvir