无意间发现「格瓦拉@电影」iOS 版的顶部 Banner 在滑动时,图片会有视差效果,遂尝试在 Android 中实现此效果。
效果图:

下面来讲一下实现原理。
首先主容器使用 ViewPager,无需自己做一个滑动控件。接着通过实现 ViewPager.PageTransformer 接口的 transformPage(View page, float position) 方法来达到效果。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | @Overridepublic void transformPage(View page, float position) {
 int pageWidth = page.getWidth();
 float x = position * pageWidth;
 ImageView imageView = (ImageView) page.findViewById(R.id.fragment_image);
 if (imageView == null) {
 return;
 }
 imageView.setTranslationX(0.75f * -x);
 }
 
 | 
ViewPager 使用自定义的 PageTransformer 效果
| 12
 3
 
 | ViewPager pager = (ViewPager) findViewById(R.id.main_content_pager);pager.setAdapter(new ImagePagerAdapter(getSupportFragmentManager()));
 pager.setPageTransformer(true, this);
 
 | 
源码下载地址:ViewPagerRoller