5

興味深い問題が発生しています...解決策が見つからないようです。ObjectAnimator を使用して ImageView を回転させています。しかし、onTouchListener は MotionEvent.ACTION_DOWN のみを登録しているようです。(Log Cats からこれを推測しました。MotionEvent.ACTION_MOVE と MotionEvent.ACTION_UP もあります)。

おそらく問題は、ビューを聞いて同時にアニメーション化しようとすることに関係していると思いました。イメージビューとリニア レイアウト (MATCH PARENT に設定) の両方を相対レイアウトでラップし、タッチ イベントをリッスンするようにリニア レイアウトを登録しました。Linear Layout にも同じ問題があります。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;
}

(フォーマットが不十分なコードについては申し訳ありません...)

4

1 に答える 1

15
return false;  

に変更 return true;

于 2012-05-12T14:10:51.923 に答える