首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何制作新的PlayStore视差效果

如何制作新的PlayStore视差效果
EN

Stack Overflow用户
提问于 2014-08-23 18:36:41
回答 2查看 57.6K关注 0票数 48

有谁知道我如何实现新的视差滚动效果-当你在PlayStore上打开一个应用程序并尝试向下滚动时,内容会越过顶部的图像。我怎样才能做到这一点呢?

EN

回答 2

Stack Overflow用户

发布于 2014-08-23 18:42:39

有一个名为FadingActionBar的库,它可以完全满足您的要求。您可以在GitHub (click)上找到该库,并在Play Store (click)中找到一个演示应用程序。

用法如下所示:

代码语言:javascript
复制
FadingActionBarHelper helper = new FadingActionBarHelper()
    // Set the ActionBar drawable - basically the color
    .actionBarBackground(R.drawable.ab_background)
    // Set the Header - usually an image
    .headerLayout(R.layout.header)
    // Set the main layout
    .contentLayout(R.layout.activity_scrollview);
setContentView(helper.createView(this));
helper.initActionBar(this);
票数 4
EN

Stack Overflow用户

发布于 2016-11-04 12:14:56

您可以通过跟踪回收器视图滚动来自定义视差动画

首先在图像视图布局中。设置父布局比图像视图小,以便在设置translationY时防止图像超出界限

代码语言:javascript
复制
<android.support.percent.PercentRelativeLayout
        android:id="@+id/index_level6_image_section"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:clipChildren="false">

        <ImageView
            android:id="@+id/index_level6_parallaxImage"
            android:layout_width="match_parent"
            android:layout_height="240dp"
            android:layout_centerInParent="true"
            android:background="@color/timberwolf"
            android:layout_marginTop="-20"
            android:layout_marginBottom="-20"
            android:scaleType="centerCrop"
            app:imageUrl="@{level6CellViewModel.level6ImageUrl}" />

    </android.support.percent.PercentRelativeLayout>

之后,跟踪回收器视图滚动效果并transitionY图像视图。

*我使用rxbinding和kotlin来实现。你可以使用传统的监听方法和java方法,也可以有相同的想法。

代码语言:javascript
复制
RxRecyclerView.scrollEvents(recyclerView)
                    .subscribe { event ->
                        // get the visible cell items of the recycler view
                        val firstVisible = layoutManager.findFirstVisibleItemPosition()
                        val visibleCount = Math.abs(firstVisible - layoutManager.findLastVisibleItemPosition())

                        /** loop the visible cell items from the recycler view */
                        for (i in firstVisible..firstVisible + visibleCount) {
                            event.view().layoutManager?.findViewByPosition(i)?.let { cellItem ->
                                /** only for index cell level 6 parallax image */
                                cellItem.findViewById(R.id.index_level6_parallaxImage)?.let { imageView ->
                                    /** setting the parallax effect */
                                    val translationY = (cellItem.top - cellItem.height) / level6ParallaxRate
                                    imageView.translationY = -translationY
                                }
                            }
                        }
                    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25461014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档