我需要创建一个在具有3个页面的viewPager上具有2个特殊行为的应用程序:
在第0页上,有2张图片,一张在另一张图片的上方。从第0页到第1页时,背景图像不会移动,但从第1页到第2页时它将移动(反之亦然)。在第1页,除了第0页的背景图像之外没有任何内容。
简而言之,对于用户来说,似乎第0页的图像在滚动到第1页时实际显示第1页的内容(因为第1页的内容位于第0页后面)。
有些页面会在顶视图上移动得比viewPager快,从而提供一种效果,好像它们以半3d方式漂浮在它上面。也许在页面的一半滚动后显示出来。
这两种特殊行为都很难想到,我想问你如何实现它们的建议。
另一个棘手的问题是我需要使用viewPager的指示器,所以即使我决定使用多个viewPagers,我也必须处理这个问题。
答案 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从右到左覆盖它。