大家? 我正在测试一些触摸板,它必须与我们公司的Android设备一起使用。我实现了一些绘图示例并在Android设备上运行。我实施了很多绘图样本。 当我在Android手机或其他设备上运行实现的apks时,那些工作正常。 但是当我们在Android设备上运行时,它会在笔离开打击垫后在屏幕上绘制。 这是绘图样本
的一部分public SignatureView(Context context) {
super(context);
paint.setAntiAlias(true);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeWidth(5.0f);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawPath(path, paint);
debug("OnDraw");
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float eventX = event.getX();
float eventY = event.getY();
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
debug("ACTION_DOWN");
path.moveTo(eventX, eventY);
lastTouchX = eventX;
lastTouchY = eventY;
return true;
case MotionEvent.ACTION_MOVE:
debug("ACTION_MOVE");
resetDirtyRect(eventX, eventY);
path.lineTo(eventX, eventY);
break;
case MotionEvent.ACTION_UP:
debug("ACTION_UP");
break;
default:
return false;
}
invalidate(
(int) (dirtyRect.left-halfStrokeWidth),
(int) (dirtyRect.top-halfStrokeWidth),
(int) (dirtyRect.right+halfStrokeWidth),
(int) (dirtyRect.bottom+halfStrokeWidth));
lastTouchX = eventX;
lastTouchY = eventY;
return true;
你可以在日志上看到,它首先开始在屏幕上绘图,但是在它没有做任何事情之后,在笔左边的事件组同时发生之后,之后它就画在了屏幕上。我没有制作视频,但是如果你看到的话,就像我画画时没有发生任何事情,但是在笔左边的事件同时发生之后。
您认为问题是什么?驱动程序或标志牌或设备。我不知道设备的真实规格,但我听说设备规格就像三星Galaxy S1。
答案 0 :(得分:0)
onTouchEvent未在mainThread上执行。所以请致电
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
// your drawing code here
resetDirtyRect(eventX, eventY);
path.lineTo(eventX, eventY);
}
});
来自听众。