RecyclerView每个项目的视差滚动背景

时间:2015-08-28 15:36:43

标签: android android-recyclerview parallax

我正在努力获得视差效果。例如在声音云安卓应用程序或类似this之类的东西。 我有一个RecyclerView,其中每个列表项都有FrameLayoutImageView,我需要RecyclerView中的每个背景图像进行视差分割。

public class MyRecyclerView {

    private static final Dictionary<Integer, Integer> listViewItemHeights = new Hashtable<Integer, Integer>();

    ...

}

...在onBindViewHolder方法中我添加了这个:

...

viewHolder.scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {


        private int getScroll() {
            View c = discountSectionLayoutManager.getChildAt(0); 
            int scrollY = -c.getTop();

            listViewItemHeights.put(discountSectionLayoutManager.findFirstVisibleItemPosition(), c.getHeight());
                for (int i = 0; i < discountSectionLayoutManager.findFirstVisibleItemPosition(); ++i) {
                    if (listViewItemHeights.get(i) != null) 
                        scrollY += listViewItemHeights.get(i); //add all heights of the views that are gone
                }
                return scrollY;
        }

        @Override
        public void onScrollChanged() {
             int scrollY = - getScroll();
             viewHolder.imageFrameLayout.setTranslationY(scrollY * 0.1f);
        }


}

这个问题是每个项目都会向上滚动,而不仅仅是那些可见的项目。我的RecyclerView很大,有很多项目,底部的项目也都会向上滚动。 (例如,如果我可以看到项目1-3并向下滚动,即使项目4-15也会像现在一样向右滚动)。也许可以某种方式修改getScroll()方法只能滚动可见项的背景?

0 个答案:

没有答案