Android Material Design 笔记2

material design 笔记2

一.沉浸

1.什么是沉浸?传统的手机状态栏是呈现出黑色条状的,有的和手机主界面有很明显的区别。这一样就在一定程度上牺牲了视觉宽度,界面面积变小。沉浸式是APP界面图片延伸到状态栏, 应用本身沉浸于状态栏,所以如果第三方的软件没有为状态栏分配图片,那么自然就是黑色。顶端的状态栏和下面的虚拟按键都隐藏,需要的时候从边缘划出。
当启用该模式,应用程序的界面将占据整个屏幕,系统自动将隐藏系统的状态栏和导航栏,让应用程序内容可以在最大显示范围呈现,增加大屏体验,而当需要查看通知的时候只需要从顶部向下滑动就能呼出通知栏。

沉浸模式实际上有两种:
一种叫“沉浸模式”,状态栏和虚拟按钮会自动隐藏、应用自动全屏,这种模式下,应用占据屏幕的全部空间, 只有当用户从屏幕的上方边沿处向下划动时, 才会退出沉浸模式, 用户触摸屏幕其它部分时, 不会退出该模式, 这种模式比较适用于阅读器、 杂志类应用。

另外一种叫“黏性沉浸模式”,让状态栏和虚拟按钮半透明,应用使用屏幕的全部空间, 当用户从屏幕的上方边沿处向下滑动时,也不会退出该模式, 但是系统界面 (状态栏、 导航栏) 将会以半透明的效果浮现在应用视图之上 , 只有当用户点击系统界面上的控件时, 才会退出黏性沉浸模式。

2.Android 实现沉浸

android从4.4开始,开始支持UI使用StatusBar与NavigationBar的范围。
所以要进行下面的配置:
在value中的styles.xml中设置




在value-v19中的styles.xml中设置(为了兼容4.4)


在value-v21中的styles.xml中设置


二.布局控件

1.CardView、RecyclerView
Android L(5.0)中新增了两个控件分别是CardView,RecyclerView,RecyclerView这个控件是一个可以装载大量的视图集合,并且可以非常效率的进行回收和滚动。当你list中的元素经常动态改变时可以使用RecyclerView控件。
RecyclerView非常容易使用,它提供了如下两个功能:
为每个条目位置提供了layout管理器(RecyclerView.setLayoutManager)
为每个条目设置了操作动画(RecyclerView.setItemAnimator)

CardView
CardView继承自FrameLayout,允许你在card视图中显示信息. CardView也可以设置阴影和圆角。
CardView在API 21以下的圆角效果处理
2.com.android.support:design

a.TextInputLayout 提示输入内容
登录时可以提示。

比如:

 

            
        

        

            
        

注意:

app:counterTextAppearance="@style/counterTextAppearance"
app:errorTextAppearance="@style/errorTextAppearance"
app:hintTextAppearance="@style/hintTextAppearance">

可以自己在style中定义 暗示文字、提示文字、错误文字、以及的颜色 大小等风格。

    





b.TabLayout
一般与ViewPager配合 fragment一起使用

 



其中 app:tabMode 两种模式 scrollable 可滚动的; 卷动; 可卷动的;fixed 固定的,不变的;
app:tabGravity 两种 center 聚集在中间, fill充满整个bar平均分。

TabLayout在布局底部是自带一条滚动条的,为了实现块状切换的效果,可以把 app:tabIndicatorHeight 属性设置为0dp,去掉滚动条

 app:tabIndicatorHeight="0dp"

每个tab添加分割线

  mViewPager = (ViewPager) findViewById(R.id.viewPager);
    mTabLayout = (TabLayout) findViewById(R.id.tabLayout);
    LinearLayout linearLayout = (LinearLayout) mTabLayout.getChildAt(0);
    linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
    linearLayout.setDividerDrawable(ContextCompat.getDrawable(this,
            R.drawable.layout_divider_vertical));

在drawable 下边定义layout_divider_vertical






更改TabLayout选中的背景色

在drawable文件夹下建立选中效果的文件 tab_background_selected.xml和没选中的效果文件tab_background_unselected.xml color不同而已。





在drawable文件夹下建立文件 tab_background_selector.xml






最后在Style 中新建 Base.Widget.Design.TabLayout 复写

   

继续整理 2017年10月17日 19:22:56

AppBarLayout
用AppBarLayout可以让包含在其中的子控件能响应被标记了ScrollingViewBehavior的的滚动事件(要与CoordinatorLayout 一起使用),利用它我们可以很容易的去实现视差滚动效果。
CoordinatorLayout
协调(Coordinate)其他组件, 实现联动.
掌握 Coordinator Layout

AppbarLayout 严重依赖于CoordinatorLayout,必须用于CoordinatorLayout 的直接子View。

layout_scrollFlags有5种动作,分别是 scroll,enterAlways,enterAlwaysCollapsed,exitUntilCollapsed,snap。

  1. scroll ,子View 添加layout_scrollFlags属性 的值scroll 时,这个View将会随着可滚动View(如:ScrollView,以下都会用ScrollView 来代替可滚动的View )一起滚动,就好像子View 是属于ScrollView的一部分一样。

2.enterAlways ,子View 添加layout_scrollFlags属性 的值有enterAlways 时, 当ScrollView 向下滑动时,子View 将直接向下滑动,而不管ScrollView 是否在滑动。注意:要与scroll 搭配使用,否者是不能滑动的。

  1. enterAlwaysCollapsed , enterAlwaysCollapsed 是对enterAlways 的补充,当ScrollView 向下滑动的时候,滑动View(也就是设置了enterAlwaysCollapsed 的View)下滑至折叠的高度,当ScrollView 到达滑动范围的结束值的时候,滑动View剩下的部分开始滑动。这个折叠的高度是通过View的minimum height (最小高度)指定的。要配合scroll|enterAlways 一起使用.

4.exitUntilCollapsed, 当ScrollView 滑出屏幕时(也就时向上滑动时),滑动View先响应滑动事件,滑动至折叠高度,也就是通过minimum height 设置的最小高度后,就固定不动了,再把滑动事件交给 scrollview 继续滑动。

5.snap,意思是:在滚动结束后,如果view只是部分可见,它将滑动到最近的边界。比如,如果view的底部只有25%可见,它将滚动离开屏幕,而如果底部有75%可见,它将滚动到完全显示。

CollapsingToolbarLayout、
让Toolbar可伸缩,在伸缩的时候决定ToolBar是移除屏幕和固定在最上面。

属性意义

1)contentScrim:当Toolbar收缩到一定程度时的所展现的主体颜色。即Toolbar的颜色。
2)title:当titleEnable设置为true的时候,在toolbar展开的时候,显示大标题,toolbar收缩时,显示为toolbar上面的小标题。
3)scrimAnimationDuration:该属性控制toolbar收缩时,颜色变化的动画持续时间。即颜色变为contentScrim所指定的颜色进行的动画所需要的时间。
4)expandedTitleGravity:指定toolbar展开时,title所在的位置。类似的还有expandedTitleMargin、collapsedTitleGravity这些属性。
5)collapsedTitleTextAppearance:指定toolbar收缩时,标题字体的样式,

层级:



    
        
        
        
    





FloatingActionButton
浮动按钮

app:borderWidth=""------------------边框宽度,通常设置为0 ,用于解决Android 5.X设备上阴影无法正常显示的问题
app:backgroundTint=""---------------按钮的背景颜色,不设置,默认使用theme中colorAccent的颜色
app:rippleColor=""--------------------点击的边缘阴影颜色
app:elevation=""----------------------边缘阴影的宽度
app:pressedTranslationZ="16dp"-----点击按钮时,按钮边缘阴影的宽度,通常设置比elevation的数值大

NavigationView、
抽屉式的导航控件






    




1.android:layout_gravity="left"属性表示该View是左边的滑出菜单,这个属性的含义不用多说,这是DrawerLayout使用方式中的知识点。
2.app:headerLayout="@layout/header_layout"表示引用一个头布局文件,这个头就是我们在上面看到的那个背景图片,包括背景图片上面的显示用户名的控件等等。
3.app:menu="@menu/main"表示引用一个menu作为下面的点击项

Snackbar
SnackBar通过在屏幕底部展示简洁的信息,为一个操作提供了一个轻量级的反馈,并且在Snackbar中还可以包含一个操作,在同一时间内,仅且只能显示一个 Snackbar,它的显示依赖于UI,不像Toast那样可以脱离应用显示。它的用法和Toast很相似,唯一不同的就是它的第一个参数不是传入Context而是传入它所依附的父视图,但是他比Toast更强大。
未实际应用,参考
参考http://www.jianshu.com/p/cd1e80e64311/

2017年10月17日 19:38:37

你可能感兴趣的:(Android Material Design 笔记2)