Android - перетащите экран навигации - PullRequest
1 голос
/ 06 декабря 2010

Я должен сделать перетаскивание в Android. Я добавил код для навигации по экрану перетаскивания. Что не так гладко, как Android по умолчанию. Следующий код обеспечивает перемещение с помощью перетаскивания слева направо и справа налево, но проблема заключается в том, что при нажатии справа, а затем влево также перемещается экран. Как правильно это сделать. Нужно ли работать с тем же кодом при расчете значений X?
Ниже код.

// On Drag Navigation
public boolean onTouch(View arg0, MotionEvent arg1) {

    // Get the action that was done on this touch event
    switch (arg1.getAction())
    {
        case MotionEvent.ACTION_DOWN:
        {
            // store the X value when the user's finger was pressed down
            downXValue = arg1.getX();
            break;
        }

        case MotionEvent.ACTION_UP:
        {
            // Get the X value when the user released his/her finger
            float currentX = arg1.getX();            

            // Going Backward: pushing stuff to the right
            if (downXValue < currentX)
            {
                Intent lIntent = new Intent(getApplicationContext(), previousScreen.class);
                startActivity(lIntent);
                finish();
            }

            // Going Forward: pushing stuff to the left
            if (downXValue > currentX)
            {
                Intent lIntent = new Intent(getApplicationContext(), nextScreen.class);
                startActivity(lIntent);
                finish();
            }
            break;
        }
    }
}

Пожалуйста, укажите верный способ достижения этого.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 06 декабря 2010

Вы должны использовать GestureListener

0 голосов
/ 06 декабря 2010

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

Существует два или три состояния, которые следует учитывать в зависимости от того, как вы решите думать об этом.Первое - это состояние «перетаскивания», когда пользователь держит палец на экране и панорамирует вперед и назад.Второе и третье - это то, что происходит, когда пользователь отпускает.Если скорость при отпускании находится ниже определенного порога, (система использует минимальную скорость перемещения из ViewConfiguration) анимируйте к ближайшему экрану.Если скорость превышает этот порог, переходите к следующему экрану в этом направлении.

Посмотрите на классы VelocityTracker, Scroller и Interpolator.Все они могут помочь вам здесь.

...