1

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

  1. 在第 0 页,有 2 个图像,一个在另一个之上。从第 0 页转到第 1 页时,背景图像不会移动,但从第 1 页转到第 2 页时会移动(反之亦然)。在第 1 页上,除了第 0 页的背景图像外,什么都没有。

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

  2. 某些页面的顶部视图会比 viewPager 移动得更快,从而提供一种效果,就好像它们以半 3d 方式漂浮在其上方一样。可能会在页面滚动一半后出现。

这两种特殊行为都很难考虑,我想请教您如何实现它们的建议。

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

4

1 回答 1

0

复制Page 0和Page 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从右到左覆盖它。

于 2013-05-08T09:32:04.887 回答