我试图在滑过片段时模仿视差效果,我读过有关beginFakeDrag和fakeDragBy但是说实话,即使这是解决我问题的最佳方法,我也不知道。
任何人都使用ViewPager做了类似的事情,或者提示我应该如何解决这个问题?
谢谢
答案 0 :(得分:11)
答案 1 :(得分:11)
不使用自定义库的简单方法是实现ViewPager.PageTransformer
我创建了我的布局,使用相同的id
作为背景元素。对于我的示例,所有背景图像都将使用标识background
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/background"
android:src="@drawable/img12"
android:scaleType="fitXY"/>
然后,当我进入实施ViewPager.PageTransformer
时,我可以像这样引用该图像:
public class Transformer implements ViewPager.PageTransformer{
@Override
public void transformPage(View page, float position) {
if(position >= -1 && position <= 1){
page.findViewById(R.id.background).setTranslationX(-position * page.getWidth() / 2);
} else {
page.setAlpha(1);
}
}
}
最后,我将ViewPager.PageTransformer
分配给ViewPager
,就像这样。
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setPageTransformer(false, new Transformer());
答案 2 :(得分:6)
我知道它有点陈旧,但请看一下https://github.com/xgc1986/ParallaxPagerLibrary
它不会覆盖onDraw方法,不仅影响图像效果,而且适用于各种视图
mPager.setPageTransformer(false, new ParallaxTransformer(R.id.parallaxContent));
R.id.paraallaxContent是您希望产生此效果的视图的ID
除非其他解决方案,不需要任何具体的结构工作,也是布局独立的
演示:youtube
答案 3 :(得分:2)
也许这个图书馆可以帮到你:
答案 4 :(得分:2)
答案 5 :(得分:2)
这是我写的ViewPager子类,非常好用。您不需要对它做任何不同的事情,只需包含依赖项并将其用作标准ViewPager。可在GitHub上找到。
答案 6 :(得分:2)
此库可在x和y方向完全自定义,并包含alpha效果:
https://github.com/prolificinteractive/ParallaxPager
安装(自v0.7起,检查README以获取更新):
使用Gradle
在布局XML中使用ParallaxContainer
而不是ViewPager
为每个页面创建一个布局XML文件(可以为每个移入/移出页面的对象单独设置x / y / alpha属性)
要添加到您的活动onCreate
的一些复制/粘贴行
答案 7 :(得分:1)
也许这个库可能有用: https://github.com/matrixxun/ProductTour ?
它使用&#34; ViewPager.PageTransformer&#34;使内部的移动方式不同。