Как получить движение пикселей при выполнении Fling? - PullRequest
0 голосов
/ 02 декабря 2011

мое приложение требует очень точных измерений движения.не очень точно, но близко к нему, хотелось бы, чтобы пользователь держал палец на экране и двигался влево или вправо, допустим, до 100 пикселей, я могу его отследить.

 class MyGestureDetector extends SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            try {

                if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
                    return false;
                // right to left swipe
                if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                    //increament in image index & showImage()
                }  else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                    //decrement in image index & showImage()
                }
            } catch (Exception e) {
                // nothing
            }
            return false;
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (gestureDetector.onTouchEvent(event))
            return true;
        else
            return false;
    }

на самом деле у меня есть анимациякадры и событие касания. Я хочу быстро переместить эти изображения, чтобы пользователь мог плавно видеть его трехмерное изображение, и это возможно только при наличии пиксель-пиксельной дорожки.

.как этого добиться?

Ответы [ 2 ]

0 голосов
/ 02 декабря 2011

Вы определили SWIPE_MIN_DISTANCE, SWIPE_MAX_OFF_PATH или SWIPE_THRESHOLD_VELOCITY?Вы можете объявить их так:

private static final int SWIPE_MIN_DISTANCE = 200;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;

Вы можете изменить числовые значения по своему вкусу.

0 голосов
/ 02 декабря 2011

Я не уверен, что gestListener - это то, что нужно.Я смог использовать OnTouchEvent, чтобы отслеживать нужный вам уровень:

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction() & MotionEvent.ACTION_MASK) {

    case MotionEvent.ACTION_DOWN:
        // capture start position from event
        break;

    case MotionEvent.ACTION_MOVE:
        // do something interactively
        break;

    case MotionEvent.ACTION_UP:
        // check distance between start and end postions and do something
        break;
    }
    return true; // return true if you handle event otherwise return false!
}

Существует множество других событий, которые могут вам помочь.

...