摘要:原图加载毛玻璃的效果比较快,你的这个打开白屏好几秒。这就是系列第六篇之系列之,等。这个系列的讲解和实例都会整理在一个里,的地址去吧,我会慢慢完善的。
这篇文章其实我一直在想,是写还是不写,因为关于讲 CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout,Toolbar,TabLayout 等这些控件的使用,以前写过一篇,那就是《通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout 》,一直关注和看公众号的关注者应该看到过,上一篇的推送也特别讲了 CoordinatorLayout 的其他用法,看过的人都说还能这么用啊?哈哈……这次写这篇是对我上一篇《通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout 》遗留问题的加强和修改。
这次关于 CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout,Toolbar,TabLayout 等这些控件的用法我就不讲了,不懂的或者不清楚的就去看《通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout 》这篇文章,因为这次我们主讲怎么把上次大家给我提问的问题进行修改和加强,优化等。
问题上次关于仿稀土掘金的文章发出后,我看到有人在微信后台跟我留言,也有人在github上给我提问题,大约问的最多的有三个问题。
原图是沉浸状态栏,你的这个模仿的效果图没有做到。
原图加载毛玻璃的效果比较快,你的这个打开app白屏好几秒。
原图fragment中有列表,你的没有,为什么我放上ListView之后,标题栏不能折叠等等
现在我们就从以上三个问题,进行修改和加强,优化,在讲之前,先看效果图对比,如果感觉好,你们再继续往下看。
稀土掘金原图 之前的模仿效果图 增强,修改,优化后的效果图 解决方法 第一个问题大致的方法过程就是如下:
配置window的各项参数,使状态栏透明
/** * 使状态栏透明 */ @TargetApi(Build.VERSION_CODES.KITKAT) private static void transparentStatusBar(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); activity.getWindow().setStatusBarColor(Color.TRANSPARENT); } else { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } }
设置根布局的参数
/** * 设置根布局参数 */ private static void setRootView(Activity activity) { ViewGroup rootView = (ViewGroup) ((ViewGroup) activity. findViewById(android.R.id.content)).getChildAt(0); rootView.setFitsSystemWindows(true); rootView.setClipToPadding(true); }
添加半透明矩形条
/** * 添加半透明矩形条 * * @param activity 需要设置的 activity * @param statusBarAlpha 透明值 */ private static void addTranslucentView(Activity activity, int statusBarAlpha) { ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content); // 移除半透明矩形,以免叠加 if (contentView.getChildCount() > 1) { contentView.getChildAt(1).setBackgroundColor(Color.argb(statusBarAlpha, 0, 0, 0)); } else { contentView.addView(createTranslucentStatusBarView(activity, statusBarAlpha)); } }
大致的步骤就是这样,我这里用的是别人封装好的,github地址是:https://github.com/laobie/StatusBarUtil 大家可以去参考使用。
第二个问题以前的毛玻璃效果,是我从网上找的一个毛玻璃算法,然后搞出来的,确实很慢,然后我在网上找更快的加载的速度的算法,找来找去,网上都是那几种,最快的也得白屏四秒,最后终于搞定了一个快的,真的是脑子不灵活了,光想着毛玻璃了,不是glide也支持毛玻璃,支持模糊效果吗?一用它确实快。就是这么解决的。怎么使用的,我相信用过glide的都会吧,如果你没用过,就去下载源码吧,里面写的非常简单。
第三个问题CoordinatorLayout协同布局在一般只结合RecyclerView和NestedScrollView使用,所以你用ListView没有效果,如果你硬要用ListView那就比较麻烦了,倒不是做不到。你去分析源码可以知道RecyclerView和NestedScrollView它们都实现了一个接口NestedScrollingChild,所以我们可以自定义ListView,实现NestedScrollingChild接口就好。你也可以使用listView.setNestedScrollingEnabled(true)也行,也能做到,但是貌似这两种方法只能支持在android5.0以上的手机才能用,所以还是建议大家使用RecyclerView就没那么多事了。
这就是Material Design系列第六篇之《Android Material Design系列之CoordinatorLayout,CollapsingToolbarLayout等》。
这个系列的讲解和实例都会整理在一个demo里,demo的github地址:https://github.com/loonggg/MaterialDesignDemo 去star吧,我会慢慢完善的。
仿稀土掘金效果的demo也放到上边的那个综合demo里了,当然多带带的demo效果也修改了,地址是:https://github.com/loonggg/CoordinatorLayoutDemo
MaterialDesign系列文章推荐:
Android Material Design系列之RecyclerView和CardView(可点击)
Android Material Design系列之Toolbar(可点击)
Android Material Design系列之Navigation Drawer(可点击)
Android Material Design系列之FloatingActionButton和Snackbar(可点击)
Android Material Design系列之Palette(可点击)
扩展篇(可点击):
通过来模仿稀土掘金个人页面的布局来学习使用 CoordinatorLayout
CoordinatorLayout的使用如此简单
欢迎关注微信公众号:非著名程序员(smart_android),每天每周定时推送原创技术文章。所有技术文章, 均会在微信订阅号首发,关注微信公众号可以及时获得技术文章推送。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/64898.html
摘要:今天主讲的系列的两个控件都不难,所以一起讲了,分别是和。之所以出现这么久了,不太火,不太常用,估计跟他悬浮有关,容易挡住其他内容。那我们现在就研究改如何在滑动列表时隐藏和显示这个悬浮按钮。其实也非常简单,和修改样式的过程差不多。 今天主讲的Material Design系列的两个控件都不难,所以一起讲了,分别是FloatingActionButton和Snackbar。这个系列都是主讲...
阅读 1582·2021-10-12 10:11
阅读 3726·2021-09-03 10:35
阅读 1416·2019-08-30 15:55
阅读 2099·2019-08-30 15:54
阅读 942·2019-08-30 13:07
阅读 949·2019-08-30 11:09
阅读 556·2019-08-29 13:21
阅读 2629·2019-08-29 11:32