有谁知道如何实现新的视差滚动效果 - 当您在PlayStore上打开应用程序并尝试向下滚动时,您可以看到效果,内容覆盖顶部图像。我怎样才能做到这一点?
答案 0 :(得分:61)
Google最近宣布Design support library,并且支持实施折叠工具栏。
除了固定视图外,您还可以使用
app:layout_collapseMode="parallax"
(可选app:layout_collapseParallaxMultiplier="0.7"
设置视差 乘数)实现视差滚动(比如兄弟姐妹)CollapsingToolbarLayout
)中的ImageView
示例:
<android.support.design.widget.AppBarLayout
android:layout_height="192dp"
android:layout_width="match_parent">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
app:layout_collapseMode="pin"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
答案 1 :(得分:29)
您可以尝试这个(FadingActionBar库):
https://github.com/ManuelPeinado/FadingActionBar 击>
在android上试一下这个库的例子:https://play.google.com/store/apps/details?id=com.manuelpeinado.fadingactionbar.demo
编辑:而非第三方库使用此AppBarLayout和CollapsingToolbarLayout http://android-developers.blogspot.in/2015/05/android-design-support-library.html
答案 2 :(得分:18)
尝试 ObservableScrollView 库
https://github.com/ksoichiro/Android-ObservableScrollView
来自Play商店的演示应用程序
示例演示,
答案 3 :(得分:4)
有一个名为FadingActionBar
的图书馆完全符合您的要求。您可以在GitHub (click)上找到该库,在Play Store (click)中找到演示应用程序。
用法是这样的:
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 :(得分:4)
答案 5 :(得分:0)
您可以通过跟踪Recycler View Scrolling
来自定义视差动画首先在图像视图布局中。设置父布局小于图像视图,以便在设置translationY时防止图像超出边界
<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>
之后,跟踪回收者视图滚动效果并转换图像视图。
***我正在使用rxbinding和kotlin来实现。你可以使用传统的听力方法和java方法,但也有同样的想法。
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
}
}
}
}