ViewPager узнать смещение страницы

571
28 ноября 2016, 18:41

Есть ViewPager, каким методом можно узнать отклонение от центра страницы? То есть если страница неподвижно стоит в центре, то отклонение 0. Если начали тащить страницу влево, то отклонение растёт от 0 до 100 к примеру, в другую сторону тащим то отклонение от 0 до -100. Задержали палец на середине, где видно половину обеих страниц, то отклонение 50. Что то в этом роде нужно, перерыл методы, ничего подобного не нашел. Судя по документации, это в этом методе:

void onPageScrolled (int position, 
                float offset, 
                int offsetPixels)

Но вот как из него эти данные вытащить не знаю

Answer 1

Согласно документации, в этом самом onPageScrolled есть positionOffset, принимающий значения от 0 до 1 и position, соответствующий первой видимой странице.

    ViewPager pager = (ViewPager) view.findViewById(R.id.pager);
    pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        int selectedPage = 0;
        @Override
        public void onPageScrolled(int position, float positionOffset,
                int positionOffsetPixels) {
            if (position < selectedPage) {
                onPageScrolled(positionOffset - 1);
            } else {
                onPageScrolled(positionOffset);
            }
        }
        @Override
        public void onPageSelected(int position) {
            selectedPage = position;
        }
        @Override
        public void onPageScrollStateChanged(int state) {
        }
        public void onPageScrolled(float currentPageOffset) {
            Log.d("TAG", "offset: " + (int) (currentPageOffset * 100));
        }
    });

Но нужно понимать, что "текущая" страница изменится, как только вы отпустите ViewPager. Вообще изначальный вариант с positionOffset от 0 до 1 первой видимой страницы кажется удобнее, чем то что вы просите.

READ ALSO
Как принять файл через REST по средствам Spring

Как принять файл через REST по средствам Spring

Как принять файл через REST посредством Spring?

552
Проиграть звук из памяти при помощи JNI

Проиграть звук из памяти при помощи JNI

Я делаю игру на JavaИ конечно, в игре должны быть звуки

473
Ошибка при работе с библиотекой phonenumbers

Ошибка при работе с библиотекой phonenumbers

В проекте довольно давно используется гугловая библиотека comgooglecode

562
Как отобразить на веб-страничке только нужную часть файла?

Как отобразить на веб-страничке только нужную часть файла?

Есть текстовый файл, в котором есть несколько строк которые нужно отобразить в веб-интерфейсе, сам файл лежит на диске, нужно прочитать файл...

418