我试图在我的片段中滑动时模拟视差效果,我已经阅读过 beginFakeDrag 和 fakeDragBy 但老实说,我不知道它是否是解决我的问题的最佳方法。
任何人都对 ViewPager 做过类似的事情,或者对我应该如何处理这个有提示?
谢谢
我试图在我的片段中滑动时模拟视差效果,我已经阅读过 beginFakeDrag 和 fakeDragBy 但老实说,我不知道它是否是解决我的问题的最佳方法。
任何人都对 ViewPager 做过类似的事情,或者对我应该如何处理这个有提示?
谢谢
不使用自定义库的一种简单方法是实现ViewPager.PageTransformer
我创建了布局以将其id
用于背景元素。对于我的示例,所有背景图像都将使用 idbackground
<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());
我知道它有点旧,但看看https://github.com/xgc1986/ParallaxPagerLibrary
它不会覆盖 onDraw 方法,并且效果不仅适用于图像,它适用于各种视图
mPager.setPageTransformer(false, new ParallaxTransformer(R.id.parallaxContent));
R.id.paraallaxContent 是你想要这个效果的View的id
除非其他解决方案,不需要任何具体结构即可工作,并且与布局无关
演示:YouTube
也许这个库可以帮助你:
这是我编写的 ViewPager 子类,非常易于使用。您不需要对它做任何不同的事情,只需包含依赖项并将其用作标准 ViewPager。在GitHub上可用。
这个库在 x 和 y 方向上是完全可定制的,并且包括 alpha 效果:
https://github.com/prolificinteractive/ParallaxPager
安装(从 v0.7 开始,检查 README 以获取更新):
使用 Gradle 添加为 Maven Central 依赖项
使用ParallaxContainer
布局 XML 代替ViewPager
为每个页面创建一个布局 XML 文件(可以为每个移入/移出页面的对象单独设置 x/y/alpha 属性)
有一些复制/粘贴行要添加到onCreate
您的活动中
也许这个库可能有用: https ://github.com/matrixxun/ProductTour ?
它使用“ViewPager.PageTransformer”使事物在内部以不同方式移动。