多层viewPager

时间:2013-05-08 08:53:18

标签: android android-viewpager viewpagerindicator multi-layer

我需要创建一个在具有3个页面的viewPager上具有2个特殊行为的应用程序:

  1. 在第0页上,有2张图片,一张在另一张图片的上方。从第0页到第1页时,背景图像不会移动,但从第1页到第2页时它将移动(反之亦然)。在第1页,除了第0页的背景图像之外没有任何内容。

    简而言之,对于用户来说,似乎第0页的图像在滚动到第1页时实际显示第1页的内容(因为第1页的内容位于第0页后面)。

  2. 有些页面会在顶视图上移动得比viewPager快,从而提供一种效果,好像它们以半3d方式漂浮在它上面。也许在页面的一半滚动后显示出来。

  3. 这两种特殊行为都很难想到,我想问你如何实现它们的建议。

    另一个棘手的问题是我需要使用viewPager的指示器,所以即使我决定使用多个viewPagers,我也必须处理这个问题。

1 个答案:

答案 0 :(得分:0)

复制第0页和第1页中的背景图像,并尝试在onPageScrolled回调中更改图像偏移以实现您的目标〜

FragmentPic是一个简单的片段,只有一个imageview子项为iv

    /*this method change position of image to move it against its parent and make it looks static to the screen */
    public void changeImageOffset(int offset) {
        RelativeLayout.LayoutParams lp = (LayoutParams) iv
                        .getLayoutParams();
                lp.leftMargin = offset;
                lp.rightMargin = -offset;
                iv.setLayoutParams(lp);
    }
viewPager活动中的

    mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onPageScrolled(int position, float arg1, int arg2) {
                ((FragmentPic) mAdapter.getItem(position))
                        .changeImageOffset(arg2);

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }
        });

上面的代码可以使page1静态,page2从右到左覆盖它。