可以修改发送给监听器的数据吗?

时间:2016-12-27 18:02:23

标签: java android

我可以修改发送到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方法内部我可以使用修改后的事件。

1 个答案:

答案 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());
}