android - Android 的 ViewPager 中的视差效果

标签 android android-viewpager parallax

我试图在滑过我的 fragment 时模拟视差效果,我读过 beginFakeDrag 和 fakeDragBy,但老实说,我不知道这是否是解决我的问题的最佳方法。

有人用 ViewPager 做过类似的事情,或者对我应该如何处理这个有提示吗?

谢谢

最佳答案

在不使用自定义库的情况下执行此操作的一种简单方法是实现 ViewPager.PageTransformer

我创建的布局为其背景元素使用相同的 id。对于我的示例,所有背景图像都将使用 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());

关于android - Android 的 ViewPager 中的视差效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12424088/

相关文章:

parallax - Skrollr - 相对 div 中的视差背景停止在视口(viewport)上滚动一半

javascript - 如何在垂直滚动条上使用 Stellar.js 从侧面移动/动画元素?

java - android中如何等待线程完成

android - 如何修复 TabLayout 的上边距

android - 在 ViewPager 中按需加载内容

java - 使用 Fragments、ViewPager、PullToRefresh 进行应用程序设计

html - 移动设备上的粘性滚动问题

java - setContentView(int) 不起作用

Android - 拖放 - 列表重新排列

Android - 如果应用程序终止,远程服务也会终止