Android视图画布onTouchEvent
我正在尝试做一个愚蠢的应用程序,其中使用Android视图画布onTouchEvent,android,Android,我正在尝试做一个愚蠢的应用程序,其中使用Canvas绘制的“HelloWorld!!”字符串会移动。字符串的位置(x\u new,y\u new)只是它的旧位置(x\u old,y\u old)加上(x,y)事件返回的(x,y)。问题是事件操作\u UP无法识别。Log.d()函数总是打印类似于motionEvent(28254):motionEvent{4050df70 action=4x=354.0y=415.0 pressure=0.2000002 size=0.266668}其中acti
Canvas
绘制的“HelloWorld!!
”字符串会移动。字符串的位置(x\u new,y\u new)
只是它的旧位置(x\u old,y\u old)
加上(x,y)
事件返回的(x,y)
。问题是事件操作\u UP
无法识别。Log.d()
函数总是打印类似于motionEvent(28254):motionEvent{4050df70 action=4x=354.0y=415.0 pressure=0.2000002 size=0.266668}
其中action=4
永不更改。你有什么建议吗?谢谢
class myView extends View {
private Canvas canvas;
private int x;
private int y;
public HUDView(Context context) {
super(context);
this.x=5;
this.y=5;
}
protected void onDraw(Canvas canvas) {
this.canvas=canvas;
this.canvas.drawText("HelloWorld!!", x, y, mLoadPaint);
}
@Override
public boolean onTouchEvent( MotionEvent event) {
super.onTouchEvent(event);
Log.d("motionEvent", event.toString());
if (event.getAction()==MotionEvent.ACTION_UP){
Log.d("motionEvent", "action_up");
this.x+=(int)event.getX();
this.y+=(int)event.getY();
return true;
}
this.postInvalidate();
return true;
}
}
class myView extends View {
private int x;
private int y;
public myView (Context context) {
super(context);
this.x=5;
this.y=5;
}
@Override
protected void onDraw(Canvas canvas){
canvas.drawText("HelloWorld!!", x, y, mLoadPaint);
}
@Override
public boolean onTouchEvent( MotionEvent event) {
super.onTouchEvent(event);
Log.d ("motionEvent", event.toString());
if (event.getAction()==MotionEvent.ACTION_UP){
Log.d("motionEvent", "action_up");
this.x+=(int)event.getX();
this.y+=(int)event.getY();
}
this.postInvalidate();
return true;
}
}
使用失效后失效在线程中使用感谢您的回答,并为错误道歉@CarlSaldanha代码对我不起作用即使有你的建议也不行。我仍然只有'action=4'运动事件'action=4'代表外部的动作\u。这意味着您在部署此视图时犯了错误,动作发生在外部。请阅读此处的更多信息