我正在尝试实现工具栏、和用户图像动画,就像推特的用户配置文件中使用的那样。
我尝试了很多东西,但我无法实现快速固定在屏幕顶部的折叠工具栏与它的一些背景,当它被展开时,使用户图像首先在工具栏上,然后缩小并在滚动时移动到工具栏下方。
twitter是如何在用户个人资料图像中实现平滑效果的?他们是如何将这个图像放在工具栏前面,然后滚动到工具栏后面,并在工具栏下面实现平滑效果的呢?
我尝试了以下所有场景:
具有视差效果的CollapseParallaxMultiplier
,然后平滑地移动Y位置(滚动时无法达到将用户图像发送到工具栏下方的效果)。
之前的场景对我来说都不是很好。
XML层次结构:
<android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.AppBarLayout>
<android.support.design.widget.CollapsingToolbarLayout>
<LinearLayout>
<!--Some TextViews and ImageViews-->
</LinearLayout>
<ImageView src="My User profile Img"/> <!--Image first above toolbar and when toolbar is collapsing scale down and then go below toolbar-->
<ImageView src="My background" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.8"/>
<android.support.v7.widget.Toolbar app:layout_collapseMode="pin"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<!--Second Part, where the ViewPager should be pinned below the Toolbar-->
<NestedScrollView app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout>
<android.support.design.widget.TabLayout/>
<android.support.v4.view.ViewPager/>
</LinearLayout>
</NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
在附件中,您可以看到Twitter对用户配置文件活动的影响。
发布于 2016-05-05 05:39:30
我相信你的尝试比它应该做的更难
CollapsingToolbarLayout
有这个通常与颜色一起使用的contentScrim
元素,但实际上它可以是任何可绘制的。
从源代码中,您可以看到它直接绘制在Toolbar
后面
//这有点奇怪。我们的scrim需要在工具栏后面(如果它存在),
//但是在它后面的任何其他孩子面前。为此,我们截取
// drawChild()调用,在绘制工具栏时先绘制我们的scrim
因此,我想您可以从“标准”XML布局开始:
`协调器-> AppBar -> CollapsingToolbar ->工具栏
然后用一些BitmapDrawable调用setContentScrim
,看看会发生什么。
collapsingToolbar.setContentScrim(
context.getResources()
.getDrawable(R.drawable.something);
在那之后,你需要一些几何图形来使它看起来完全正确,但这不是我的回答范围。推特似乎也让图片变得有点模糊,但这是一个不同的问题(使用RenderScript)。
此外,当您滚动视图时,scrim可能会不断移动,那么您可能需要创建一个自定义的可绘制,它将允许您偏移绘制位置以使其看起来合适。但这些都是“也许”和“但是”。主要的想法就在这里。
发布于 2016-05-11 13:24:37
您可以尝试下面的xml文件:
<android.support.design.widget.CoordinatorLayout >
<android.support.design.widget.AppBarLayout>
<android.support.design.widget.CollapsingToolbarLayout
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:contentScrim="?attr/colorPrimary">
<ImageView
app:layout_collapseMode="parallax"/>
<android.support.v7.widget.Toolbar
app:layout_collapseMode="pin" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<NestedScrollView app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout>
<android.support.design.widget.TabLayout/>
<android.support.v4.view.ViewPager/>
</LinearLayout>
</NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
还可以使用Pallete为CollapsingToolbar.添加视差颜色
有关更多详细信息,请参阅此link。
https://stackoverflow.com/questions/37037621
复制相似问题