关于折叠布局,也许你并不陌生,最新版的陌陌,或者一些其他的社交APP都有一个折叠布局。折叠布局,让我们的APP更加具有交互性,同时也更加美观,先来展示一下效果图:

这是我个人做的一个APP主界面,可以看到,在滑动的时候,大标题随着拉动变为小标题,同时移动位置,并且有一张图片,随滑动淡出屏幕。如果你了解过Material Design,那么这个看似复杂的效果就很容易实现,都是用到这个desigon依赖库中的组件属性而完成的.

首先加入依赖库:

  1. compile 'com.android.support:design:23.3.0'
  2. compile 'com.android.support:recyclerview-v7:23.3.0'

最好也要把recyclerview的依赖添加一下,不要问我为什么,经验之谈。

然后是布局:

  1. <android.support.design.widget.CoordinatorLayout
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent"
  4. android:id="@+id/cdl_content"
  5. xmlns:android="http://schemas.android.com/apk/res/android"
  6. xmlns:app="http://schemas.android.com/apk/res-auto"
  7. >
  8. <android.support.design.widget.AppBarLayout
  9. android:layout_width="match_parent"
  10. android:layout_height="200dp"
  11. android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
  12. <android.support.design.widget.CollapsingToolbarLayout
  13. android:layout_width="match_parent"
  14. android:layout_height="match_parent"
  15. android:id="@+id/ctl_title"
  16. app:layout_scrollFlags="scroll|exitUntilCollapsed"
  17. app:contentScrim="?attr/colorPrimary">
  18. <ImageView
  19. android:layout_width="match_parent"
  20. android:layout_height="match_parent"
  21. android:background="@drawable/titile_bg2"
  22. app:layout_collapseMode="parallax"
  23. app:layout_collapseParallaxMultiplier="0.7"
  24. />
  25. <android.support.v7.widget.Toolbar
  26. android:layout_width="match_parent"
  27. android:layout_height="?attr/actionBarSize"
  28. android:id="@+id/tl_title"
  29. app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
  30. app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
  31. app:layout_collapseMode="pin"
  32. >
  33. </android.support.v7.widget.Toolbar>
  34.  
  35. </android.support.design.widget.CollapsingToolbarLayout>
  36.  
  37. </android.support.design.widget.AppBarLayout>
  38. <android.support.v4.widget.NestedScrollView
  39. android:layout_width="match_parent"
  40. android:layout_height="match_parent"
  41. app:layout_behavior="@string/appbar_scrolling_view_behavior"
  42. >
  43. <com.yakir.view.ScoreGridView
  44. android:layout_marginTop="20dp"
  45. android:layout_marginLeft="10dp"
  46. android:layout_marginRight="10dp"
  47. android:layout_width="match_parent"
  48. android:layout_height="match_parent"
  49. android:numColumns="3"
  50. android:cacheColorHint="#00000000"
  51. android:gravity="center_vertical"
  52. android:horizontalSpacing="10dp"
  53. android:verticalSpacing="10dp"
  54. android:id="@+id/gv_menu"></com.yakir.view.ScoreGridView>
  55.  
  56. </android.support.v4.widget.NestedScrollView>
  57.  
  58. </android.support.design.widget.CoordinatorLayout>

接着是逻辑代码:

  1. setSupportActionBar(toolBarTitle);
  2. ctl_title.setCollapsedTitleGravity(Gravity.CENTER);
  3. ctl_title.setExpandedTitleGravity(Gravity.CENTER);
  4. ctl_title.setTitle("手机安全卫士");
  5. ctl_title.setExpandedTitleColor(Color.WHITE);
  6. ctl_title.setCollapsedTitleTextColor(Color.WHITE);

谷歌在5.0之后就推荐使用toolbar代替actionbar,toolbar更具拓展性。这个依赖库一个很重要的控件是:CoordinatorLayout,协调布局。

这是一个将这些布局联动起来的重要布局。接下来再说说折叠布局:CollapsingToolbarLayout,它的:Expanded拉出,Collapsed关上,可以设置一些相关属性。

最重要的是设置: app:layout_scrollFlags="scroll|exitUntilCollapsed"这样它才能随滑动而滚动。

在toolbar中设置:app:layout_collapseMode="pin",使它不随滑动而退出屏幕。在AppbarLayout中设置显示折叠的高度。还可以在包裹的ImageView中设置滑动联动效果: app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.7"。

其实,实现也不是特别的复杂,只要理解了这几个新空间的用途,很容易就可以做到自己想要的酷炫效果。好了,如果你有什么疑问欢迎下方留言交流。希望对你有所帮助。

Android开发实战之拥有Material Design风格的折叠布局的更多相关文章

  1. Android开发实战之拥有Material Design风格的侧滑布局

    在实现开发要求中,有需要会使用抽屉式布局,类似于QQ5.0的侧滑菜单,实现的方式有很多种,可以自定义控件,也可以使用第三方开源库. 同样的谷歌也推出了自己的侧滑组件——DrawLayout,使用方式也 ...

  2. 创建Material Design风格的Android应用--应用主题

    本人全部文章首先公布于个人博客,欢迎关注,地址:http://blog.isming.me 昨天正式公布了android 5,同一时候android developer站点也更新了,添加了创建Mate ...

  3. [原创]自定义view之:快速开发一款Material Design风格的dialog的开源项目MDDialog

    随着google开始主导Material Design风格的设计,越来越多的app开始使用Material Design风格来设计自己的UI.虽然在Android Studio中集成了多种快速开发框架 ...

  4. Android实现Material Design风格的设置页面(滑动开关控件)

    前言 本文链接 http://blog.csdn.net/never_cxb/article/details/50763271 转载请注明出处 參考了这篇文章 Material Design 风格的设 ...

  5. 开发Google Material Design风格的WPF程序

    今天在网上看到了一个Material Design风格的WPF皮肤,看上去还是挺不错的 这个项目是开源的,感兴趣的朋友可以下载试下: https://github.com/ButchersBoy/Ma ...

  6. Material Design风格的水波涟漪效果(Ripple Effect)的实现

    Material Design是Google在2014年Google I/O大会上推出的一套全新的设计语言,经过接近两年的发展,可谓是以燎原之势影响着整个设计交互生态,和Material Design ...

  7. Material Design风格登录注册

    本文实现了以下功能 完整的代码和样例托管在Github 当接口锁定时,防止后退按钮显示在登录Activity 上. 自定义 ProgressDialog来显示加载的状态. 符合材料设计规范. 悬浮标签 ...

  8. 自定义 Material Design风格的提示框

    关闭 自定义 Material Design风格的提示框 2016-04-24 10:55 152人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 其实在14年谷歌 ...

  9. 基于React Native的Material Design风格的组件库 MRN

    基于React Native的Material Design风格的组件库.(为了平台统一体验,目前只打算支持安卓) 官方网站 http://mrn.js.org/ Github https://git ...

随机推荐

  1. Sprint第一个冲刺(第八天)

    一.Sprint介绍 完善点餐界面,点击进行跳转. 实验截图: 任务进度: 二.Sprint周期 看板: 燃尽图:

  2. spring--集合注入(常规方法)

    数据,list,set,map,Properties 集合注入 package Spring_collections; /** * Created by luozhitao on 2017/8/11. ...

  3. FastAdmin 无刷新地址改变

    FastAdmin 无刷新地址改变 群里有人问 FastAdmin 是不是用了 pjax? 之前有看到 Karson 回复过,其实 FastAdmin 用的是 HTML5 的一个History API ...

  4. video4linux(v4l)使用摄像头的实例基础教程与体会(转)

    1. video4linux基础相关     1.1  v4l的介绍与一些基础知识的介绍   I.首先说明一下video4linux(v4l).           它是一些视频系统.视频软件.音频软 ...

  5. 16.Python使用lxml爬虫

    1.lxml是解析库,使用时需要导入该包,直接在命令行输入:pip3 install lxml,基本上会报错.正确应该去对应的网址:https://pypi.org/project/lxml/#fil ...

  6. MFC对话框的Edit控件实现响应Ctrl+A全选,并实现自动/手动换行+滚动条

    首先是在Properties中设置控件属性的问题,首先必须得将Mutilines属性设为true,才能支持多行显示. 手动换行(按Enter键换行):将Want Return属性设为true 自动换行 ...

  7. UEFI 启动GPT分区 Win10和Ubuntu16.04双系统安装

    测试机器:联想小新锐7000 工具:UltraISO 系统下载 为Ubuntu分配空间 右键“我的电脑”——>“管理”——>“磁盘管理”,(win+x快捷键)选择一个有很大空闲空间的磁盘, ...

  8. FPGA常用设计思想与基本模块划分

    常用设计思想与技巧 (1)乒乓操作; (2)串并转换; (3)流水线操作; (4)异步时钟域数据同步.是指如何在两个时钟不同步的数据域之间可靠地进行数据交换的问题.数据时钟域不同步主要有两种情况: ① ...

  9. Eclipse中创建新的Spring Boot项目

    本文转载自:http://blog.csdn.net/clementad/article/details/51334064 简单几步,在Eclipse中创建一个新的spring Boot项目: 1.E ...

  10. Hibernate学习4—关联关系一对多映射2

    第四节:班级学生一对多映射实现(双向) 查询班级的时候能够获取所有的学生:   在上一节的基础之上:我们在Class端也保存学生的关系: com.cy.model.Class: public clas ...