Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践
媒介
- <br>
比来接到一个需求,这需求让我表示很难堪。(下面是一些废话)
请求的效不雅是如许的,顶部有部分悬浮,接着是一些构造,鄙人面是几个可切换的Tab页面,然后滚动的时刻~~吧啦吧啦吧啦吧啦~~ 照样直接看图吧
layout_scrollFlags:AppBarLayout供Children View应用的属性,一共有五种值:scroll,enterAlways,enterAlwaysCollapsed,snap,exitUntilCollapsed。具体的应用可以参考Android 具体分析AppBarLayout的五种ScrollFlags
重要就是顶部和Tab的悬浮,还有就是被顶掉落的那个效不雅。
听到要实现如许的效不雅,我抽屉那把砍产品专用菜刀已经擦掌磨拳了。
思路
先说说实现的思路吧,膳绫擎的效不雅大年夜致可以分成两个部分:
1、Tab向上滚动到顶部时悬浮
Tab滚动后悬浮在顶部嘛~~ 这效不雅应用CoordinatorLayout + AppBarLayout就能轻松实现。(什么?你还不懂这两个控件怎么应用?额,应当可以勉强看懂后面的内容)
2、顶部悬浮以及“被顶走”的效不雅
只要在CoordinatorLayout外面套一层FrameLayout,然后把这个顶部的构造改在膳绫擎。接着监听AppBarLayout的滚动,应用topMargin实现被“顶上去”的效不雅
拆分完毕,接下来就是实现了
实现
- Tab的悬浮效不雅
应用CoordinatorLayout、AppBarLayout、TabLayout、ViewPager来实现Tab的悬浮效不雅
- <br>
LinearLayout中设置app:layout_scrollFlags="scroll|exitUntilCollapsed" 而 TabLayout 不设置app:layout_scrollFlags属性
ViewPager中应用app:layout_behavior="@string/appbar_scrolling_view_behavior"
(CoordinatorLayout、AppBarLayout的具体用法我就不多说了)
然后,只要在Java代码中为ViewPager添加几个列表Fragment就能看到以下的效不雅(留意:列表弗成所以ListView,须要用RecyclerView)
到今朝为止,效不雅已经实现了大年夜半。最后值须要实现“被顶走”的效不雅就好了。
- 顶部“被顶走”的效不雅
这时刻,构造稍微改变下。
在原有的基本上,套了个FrameLayout,顶部的悬浮部分可以经由过程FrameLayout来实现。如许也导致下面的构造被盖住了一部分,是以在LinearLayout中加了与悬浮部分雷同高度的空View。
构造是完成了,那个“被顶走”的效不雅怎么实现呢?这时刻只要在MainActivity中对AppBarLayout的滚动进行监听即可。
- @BindView(R.id.app_bar)
- AppBarLayout mAppBar;
- @BindView(R.id.sticky_view)
- View mStickyView;
- @BindView(R.id.header)
- View mHeader;
- private void setAppBarListener() {
- mAppBar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
- @Override
- public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
- //头部高度(除去被顶部覆盖的部分)
推荐阅读
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践这就是Searls在处理Weirich开源项目中碰到的一个问题。 Weirich最受迎接的项目在他去世的时刻有合营治理者。然则Searl>>>详细阅读
本文标题:【Android】这效果,我没法描述
地址:http://www.17bianji.com/lsqh/38686.html
1/2 1