2014-09-06 6 views
2

Я создал настраиваемое представление - на самом зрения класса, я делаю некоторые расчеты, в ходе мероприятия OnTouch - это выглядит следующим образом:setOnTouchListener проблема с пользовательской точки зрения

@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 пользовательского представления работает в основном действии до самого пользовательского представления.

Надеюсь, это ясно!

Любые предложения о том, как преодолеть это, чтобы отображались последние значения?

спасибо.

ответ