Android HorizontalScrollView прокрутка страницей - PullRequest
2 голосов
/ 18 февраля 2010

Я реализовал слайд-шоу в своем приложении для Android, используя. Это работает хорошо, за исключением того, что я хочу перейти к следующему изображению с помощью жеста прокрутки (теперь он просто прокручивает несколько последних изображений перед замедлением). Я не смог найти подходящий способ сделать это, должен ли я вместо этого использовать FrameLayout? Как перейти к следующему (или предыдущему) изображению при жесте прокрутки?

Ответы [ 3 ]

2 голосов
/ 18 февраля 2010

Из вашего описания звучит так, как будто прямо сейчас у вас есть слайд-шоу, реализованное в виде серии изображений в виде прокрутки, это правильно?

Вместо того, чтобы поместить его в представление прокрутки и позволить этому представлению выполнить прокрутку, вы можете отобразить одно изображение и прослушать жест броска или прокрутки на изображении (см. документация ). Когда вы обнаружите жест, вы можете вручную изменить изображение.

Если вы хотите анимировать изображение, появляющееся на экране, вы можете использовать анимацию .

1 голос
/ 15 июня 2010

Это то, что я в итоге использовал

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
        float velocityY) {
    // TODO Auto-generated method stub

    if (velocityX <= 0 ){
        // hack - send event to simulate right key press
        KeyEvent rightKey  = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT);
        this.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, rightKey);

        rightKey = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_RIGHT);
        this.onKeyUp(KeyEvent.KEYCODE_DPAD_RIGHT, rightKey);            

    }else{
        // hack - send event to simulate left key press
        KeyEvent leftKey = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT);
        this.onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, leftKey);

        leftKey = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_LEFT);
        this.onKeyUp(KeyEvent.KEYCODE_DPAD_LEFT, leftKey);
    }


    // your callback activity if you have one:
    if( callbackActivity != null ){
        callbackActivity.didFlingGallery();
    }

    return true;
}
0 голосов
/ 19 февраля 2010

в момент, когда вы отправляете вопрос, вы понимаете ответ! Я перешел от использования галереи к HorizontalScrollView обратно к использованию галереи. Просто показывает мой n00bness. Галерея хорошо решила мою проблему. У меня есть собственный класс, который расширяет Галерея и переопределяет onFling (...). При этом скорость X сбрасывается до -300 или 300 в зависимости от направления, что приводит к прокрутке до следующей «страницы».

...