Material-Design组件之AppBarLayout

原文首发于微信公众号:jzman-blog,欢迎关注交流!AppBarLayout 是一个垂直方向的 LinearLayout,它实现了许多符合 Material Design 设计规范的状态栏应该具有的功能,比如滚动手势。 AppBarLayout 一般直接用作 CoordinatorLayout 的直接子对象,如果 AppBarLayout 在别的布局中使用,其大部分功能会失效,AppBarLayout 需要一个标示才能够知道滚动视图什么时候滚动,这个标示过程是通过绑定 AppBarLayout.ScrollingViewBehavior 类完成的,这意味着应该将滚动视图的行为设置为 AppBarLayout.ScrollingViewBehavior的一个实例,这里设置包含完整类名的字符串资源,具体如下: //设置layout_behavior属性<android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <!-- Your scrolling content --></android.support.v4.widget.NestedScrollView>AppBarLayout 的子 View 应该设置一个可供滚动的 behavior,可以通过代码和 xml 属性设置,具体如下: //代码setScrollFlags(int)//xml attributeapp:layout_scrollFlagslayout_scrollFlags 属性主要是指定 AppBarLayout 子 View 当滑动手势变化时,AppBarLayout 的子 View 执行什么动作,layout_scrollFlags 属性有 5 个值,分别是: scrollenterAlwaysenterAlwaysCollapsedexitUntilCollapsedsnap在介绍这几个属性值之前,这些属性值的效果将以下面布局效果为例,布局如下: <?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.manu.materialdesignsamples.samples.SampleCoordinatorAppBarActivity"> <!--AppBarLayout——>子View设置layout_scrollFlags属性--> <android.support.design.widget.AppBarLayout android:id="@+id/ablBar" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="70dp" android:minHeight="?attr/actionBarSize" app:layout_scrollFlags="scroll"> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> <!--NestedScrollView——>设置layout_behavior属性--> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <android.support.v7.widget.RecyclerView android:id="@+id/rvAppBarData" android:clipToPadding="true" android:layout_width="match_parent" android:layout_height="wrap_content"/> </android.support.v4.widget.NestedScrollView></android.support.design.widget.CoordinatorLayout>scroll: 当设置 layout_scrollFlags 的属性为如下时: ...

May 13, 2019 · 1 min · jiezi

Material-Design-组件之-FloatingActionButton

Material Design 设计规范在 Google I/O 2014 推出,这种设计理念一经推出就受到广大开发者的喜爱,主要侧重于纸墨化创作和突出设计的实体感,使得设计更接近于真实世界,力求平滑、连续的交互方式与用户体验,这种设计规范更能促进 Android 生态系统的发展,为此,Google 提供了一系列的符合 Material Design 风格的控件,如 FloatingActionButton、Snackbar、TabLayout 等。虽然经常在开发中用到,但是没有做记录,打算从头开始记录一下这些组件的使用,今天说一下 CoordinatorLayout 和 FloatingActionButton 相关的知识。 CoordinatorLayoutCoordinatorLayout 是一个加强版的 FramLayout,意味着如果不加任何限制,在 CoordinatorLayout 里面的子 View 都会默认出现在左上角,CoordinatorLayout 有两个主要的使用方式: 作为应用的顶层布局作为与一个或多个子 View 交互的容器可为 CoordinatorLayout 里面的子 View 指定 Behavior,就在单个父布局中提供许多不同的交互效果,子 View 之间也可以相互交互,CoordinatorLayout 可以使用 CoordinatorLayout.DefaultBehavior 注解来指定子 View 的默认行为,总之,可以借助 CoordinatorLayout 实现不同的滚动效果。 FloatingActionButtonFloatingActionButton 是 Material Design 类型的按钮控件,一般表现是浮动在 UI 上层的圆形图标,有自己的 behavior 并可以设置锚点。 FloatingActionButton 有两种大小,分别是 normal(56dp) 和 mini(40dp) ,默认是 mini(40dp),其大小可以通过属性 fabSize 来指定需要的大小,当然也可以设置 fabSize 为 auto,系统会根据不同的屏幕选择合适的大小。 FloatingActionButton 间接继承 ImageView,可以使用如下方式在代码中设置图标: ...

May 11, 2019 · 2 min · jiezi

一个基于material-ui+react+koa2+mongoose的个人博客系统

前言做这玩意主要是有两个目的,练习平时工作中用不到的技术点,在熟练的基础之上去研究其原理。可能的话,替换掉自己的博客系统。项目地址: https://github.com/2fps/blooog前端前端是基于react的,用到了react-router和redux。UI库主要是material-ui,当然css-in-js的方式还只是会使用,抽空去了解下原理。项目截图就不放了,demo地址:http://132.232.131.250:3000 。用户名和密码都是admin。实现的功能文章的显示、编辑和删除功能。标签的显示、编辑和删除功能。站点信息的配置和显示。登录和修改密码功能。后端后端基于koa2和mongoose。实现的功能加密登录。log4js日志记录功能。joi对数据进行验证。已知问题审美不太好,只觉得别人的界面好,自己搞起来就那样。。后端安全没有做好,没有防xss等。前端代码较乱,还未整理,公共方法未剥离。数据库没有使用事务。没有对数据做缓存。等等。后续待加入菜单。评论。等等。。

March 10, 2019 · 1 min · jiezi