Вертикальный ListView / CoverFlow центрирует выбранное изображение

Я искал и много пробовал в этой теме. То, что я пытаюсь сделать, это в основном вертикальная галерея /CoverFlow. Я знаю, что это должно быть сделано с помощью специального ListView. И я сделал именно это.

При этом у меня возникают 2 проблемы, которые я просто не могу решить:

я) При прокрутке в списке я хочу, чтобы элементы перемещались в "слоты". Самое главное, что центрированный элемент должен двигаться точно над круглой линией, которую я нарисовал. Для лучшей визуализации: это именно то, что делает "CoverFlow", но горизонтально. Попытка переопределить onScrollStateChanged, кажется, работает недетерминированно. Вот как я это попробовал:

       public void registerScrollListener(){
       setOnScrollListener(new OnScrollListener() {

        public void onScrollStateChanged(AbsListView view, int scrollState) {
        if(scrollState == OnScrollListener.SCROLL_STATE_IDLE){
            int first = getFirstVisiblePosition();
            int last = getLastVisiblePosition();

            List<View> childs = new ArrayList<View>();

            for(int i = first; i < last; i++){
                childs.add(getChildAt(i));
            }
            int centerHeight = getHeightCenterOfSideView();
            int centerPos = 0;
            int distance = Integer.MAX_VALUE;
            for(View childView : childs){
                int newDist = Math.abs(centerHeight - (childView.getTop() + (childView.getHeight()/2)));
                if(newDist < distance){
                    distance = newDist;
                    centerPos = childs.indexOf(childView);
                }
            }
            View childView = getChildAt(centerPos);
            smoothScrollToPosition(centerPos, centerHeight - (childView.getTop() + (childView.getHeight()/2)));
        }
        }

        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
            // TODO Auto-generated method stub

        }
    });
   }

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

Может ли кто-нибудь помочь мне с любым из этих двух вопросов? Проще всего было бы просто взять какой-нибудь существующий код.

Спасибо!

0 ответов

Другие вопросы по тегам