我可以修改发送到OnTouchListener的数据吗?我的情况如下:
class A extends View{
public A(Context context){
super(context);
}
...
}
在某些活动中,我有:
A a = new A(this);
a.setOntouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
// event should be modified
....
}
}
如果发生触摸事件,我想在类A
内修改它(例如更改事件的坐标),以便在onTouch
方法内部我可以使用修改后的事件。
答案 0 :(得分:1)
没有办法修改发送到onTouch的内容,我会选择这条路线。请注意,坐标只是一个组成的名称,我确信存在类似的东西,但如果没有,你可以创建这个类。可以从触摸侦听器中访问的任何参数也可以发送到该方法,否则您可能必须设置一个类变量以获取在getModifiedCoordinates方法内部检查所需的值
A a = new A(this);
a.setOntouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
Coordinates coords = getModifiedCoordinates(event);
//do something with the coordinates
}
}
...
private Coordinates getModifiedCoordinates(MotionEvent event) {
boolean shouldBeModified = <the conditions you are checking for>;
if(shouldBeModified)
return new Coordinates(modified_x,modified_y);
else
return new Coordinates(event.getX(), event.getY());
}