我创建了一个自定义视图 - 在视图类本身,我在OnTouch事件期间做了一些计算 - 它显示如下:
@SuppressLint("ClickableViewAccessibility") @Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
pointJoyPos.set((int)event.getX(),(int)event.getY());
UpdateJoy();
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
pointJoyPos.set((int)event.getX(),(int)event.getY());
UpdateJoy();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
pointJoyPos.set(pointJoyCentre.x,pointJoyCentre.y);
UpdateJoy();
}
return true;
}
当我将此视图添加到我的XML以显示给用户时,我想显示最新的值,例如pointJoyPos,所以我写了以下内容......
THE_CUSTOM_VIEW.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
ValX = THE_CUSTOM_VIEW.GetValOfX();
return false;
}
}
);
... GetValOfX位于自定义视图类中,意味着返回pointJoyPos.X。
我遇到的问题是我将值推迟了一步,我认为发生的事情是自定义视图的onTouchEvent在自定义视图本身之前在主活动上运行。
我希望这很清楚!
有关如何克服此问题以便显示最新值的任何建议?
谢谢。