2012-05-12 5 views
5

У меня есть интересная проблема ... я не могу найти решение. Я использую ObjectAnimator для поворота ImageView; но onTouchListener, похоже, регистрирует MotionEvent.ACTION_DOWN. (Я вывел это из Log Cats, также есть MotionEvent.ACTION_MOVE и MotionEvent.ACTION_UP).Просмотр регистрации только MotionEvent.ACTION_DOWN

Я подумал, что, возможно, проблема связана с попыткой прослушать и оживить вены в одно и то же время. Я обернул как изображение, так и линейную компоновку (установленную в MATCH PARENT) в относительном макете и зарегистрировал линейный макет для прослушивания сенсорных событий. Линейная компоновка имеет ту же проблему; обрабатывается только MotionEvent.ACTION_UP. Есть ли что-то, что мне нужно, чтобы зарегистрироваться на MotionEvent.ACTION_MOVE?

Вот мой код:

  touch_pad = (LinearLayout) findViewById(R.id.layout_touch_capture); 
    touch_pad.setOnTouchListener(this); 
    touch_pad.requestFocus(); 

      public boolean onTouch(View v, MotionEvent event) { 
    switch(v.getId()) { 
    case (R.id.layout_touch_capture): 

    long end = 0; 
    long start = 0; 
    float y = event.getY(); 
    float y_sum = y; 
    float x = event.getX(); 

    switch(event.getAction()) { 
    case (MotionEvent.ACTION_UP): 
     end = animator.getCurrentPlayTime(); 
    Log.d("WheelActivity", "end location = " + end); 
    break; 
    case (MotionEvent.ACTION_MOVE): 

    Log.d("WheelActivity", "event.getY() = " + y); 
    y_sum += y; 
    animator.setCurrentPlayTime((long) (start + y_sum)); 
    Log.d("WheelActivity", "animator play time = "        animator.getCurrentPlayTime()); 
    Log.d("WheelActivity", "animator fraction = " + 
      animator.getAnimatedFraction()); 

    break; 
    case (MotionEvent.ACTION_DOWN): 
     start = animator.getCurrentPlayTime(); 
    Log.d("WheelActivity", "start location = " + start); 
    break; 
    } 
    } 
    return false; 
} 

(К сожалению о плохо отформатированный код ...)

ответ

12
return false; 

изменено на return true;