资讯专栏INFORMATION COLUMN

Android Material Design系列之CoordinatorLayout等

Aldous / 2216人阅读

摘要:原图加载毛玻璃的效果比较快,你的这个打开白屏好几秒。这就是系列第六篇之系列之,等。这个系列的讲解和实例都会整理在一个里,的地址去吧,我会慢慢完善的。

这篇文章其实我一直在想,是写还是不写,因为关于讲 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/12938.html

相关文章

  • MaterialDesign相关 - 收藏集 - 掘金

    摘要:将为按钮与操作行为转换提供一些默认动画,而及更高版本可让您定制这实现炫酷的登录效果掘金有需要的,请直接下载源码。本文就通过一个具体的例掘金此项目基于开发的一个。 Material Design 学习资料收集 - Android - 掘金本人目前正在找工作,想了解我的详细情况请移步到我的 网页版简历 ,希望能得到各位的推荐,谢谢! 关于 Material Design 在这里我就不......

    flyer_dev 评论0 收藏0
  • Android Material Design系列CoordinatorLayout

    摘要:原图加载毛玻璃的效果比较快,你的这个打开白屏好几秒。这就是系列第六篇之系列之,等。这个系列的讲解和实例都会整理在一个里,的地址去吧,我会慢慢完善的。 这篇文章其实我一直在想,是写还是不写,因为关于讲 CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout,Toolbar,TabLayout 等这些控件的使用,以前写过一篇,那就是《通...

    Little_XM 评论0 收藏0
  • Material Design - 收藏集 - 掘金

    摘要:与老前辈使用攻略刷新篇掘金小序继使用攻略助力篇之后,一直没有更新上下拉刷新的功能实现,主要还是受限于个人现有的技术实力,总觉得没有经过实际打磨的,就不敢有上场的自信。 DrawerLayout 和 NavigationView 使用详解 - Android - 掘金Android Material Design Library 推出了很长时间,越来越多的APP使用了符合Library ...

    stormzhang 评论0 收藏0
  • Android Material Design系列FloatingActionButton和Sna

    摘要:今天主讲的系列的两个控件都不难,所以一起讲了,分别是和。之所以出现这么久了,不太火,不太常用,估计跟他悬浮有关,容易挡住其他内容。那我们现在就研究改如何在滑动列表时隐藏和显示这个悬浮按钮。其实也非常简单,和修改样式的过程差不多。 今天主讲的Material Design系列的两个控件都不难,所以一起讲了,分别是FloatingActionButton和Snackbar。这个系列都是主讲...

    iKcamp 评论0 收藏0
  • Android Material Design系列FloatingActionButton和Sna

    摘要:今天主讲的系列的两个控件都不难,所以一起讲了,分别是和。之所以出现这么久了,不太火,不太常用,估计跟他悬浮有关,容易挡住其他内容。那我们现在就研究改如何在滑动列表时隐藏和显示这个悬浮按钮。其实也非常简单,和修改样式的过程差不多。 今天主讲的Material Design系列的两个控件都不难,所以一起讲了,分别是FloatingActionButton和Snackbar。这个系列都是主讲...

    LeoHsiun 评论0 收藏0

发表评论

0条评论

Aldous

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<