前言:本来这篇应该在1月份就发的,压在草稿箱好几个月了。被年末各种事情耽搁,年后又压来好几个新项目,直到现在才缓过来o(╥﹏╥)o;好了闲话不多说,进入主题!
说到CoordinatorLayout 肯定会涉及到AppBarLayout ,CollapsingToolbarLayout 和Toolbar这几个控件,以上几个控件结合可以做到很炫的效果,不过本篇文章不会涉及,免得信息多了接受不过来。所以这篇文章就主要和FloatingActionButton控件放在一起展示已做初步了解,下篇在继续探讨AppBarLayout,CollapsingToolbarLayout等。
CoordinatorLayout(协调者布局)
CoordinatorLayout是在 Google IO/15 大会发布的,遵循Material 风格,包含在 support Library中,结合AppbarLayout, CollapsingToolbarLayout等 可 产生各种炫酷的效果
API里面是这样写的:
<p>CoordinatorLayout is a super-powered FrameLayout.</p>
<p>CoordinatorLayout is intended for two primary use cases:</p>
<ol>
<li>As a top-level application decor or chrome layout</li>
<li>As a container for a specific interaction with one or more child views</li>
</ol>
翻译过来意思是:
CoordinatorLayout适用于两种主要用途:
- 作为顶级应用装饰或镶边布局
- 作为与一个或多个子视图进行特定交互的容器
简单来说,CoordinatorLayout是用来协调其子view们之间动作的一个父view,而Behavior就是用来给CoordinatorLayout的子view们实现交互的。
FloatingActionButton(悬浮按钮)
FloatingActionButton是继承自ImageView的,所以对于这个控件我们可以使用ImageView的所有属性
<android.support.design.widget.FloatingActionButton
android:id="@+id/floatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@mipmap/ok"
app:fabSize="normal"
app:borderWidth="0dp"
app:backgroundTint="#FF4411"
app:rippleColor="#336688ff"
app:elevation="8dp"
app:pressedTranslationZ="16dp"
/>
使用了app属性,则需要在根容器中添加这个属性
xmlns:app="http://schemas.android.com/apk/res-auto"
- src - 设置FAB的图标,Google建议符合Design设计的该图标大小为24dp。
- app:elevation - 默认状态下FAB的阴影大小。
- app:pressedTranslationZ—-点击按钮时,按钮边缘阴影的宽度,通常设置比elevation的数值大
- app:rippleColor - 设置FAB点击时的背景颜色。
- app:backgroundTint—-按钮的背景颜色,不设置,默认使用theme中colorAccent的颜色
- app:borderWidth -该属性尤为重要,如果不设置0dp,那么在4.1的sdk上FAB会显示为正方形,而且在5.0以后的sdk没有阴影效果。所以设置为borderWidth=”0dp”。
- app:fabSize - 设置FAB的大小,该属性有两个值,分别为normal和mini,对应的FAB大小分别为56dp和40dp。
- app:layout_anchor - 设置FAB的锚点,即以哪个控件为参照点设置位置。
- app:layout_anchorGravity - 设置FAB相对锚点的位置,值有bottom、center、right、left、top等。
接下来,为 Activity 创建一个简单的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.FloatingActionButton
android:id="@+id/floatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="16dp"
android:src="@drawable/ic_done" />
</android.support.design.widget.CoordinatorLayout>
然后我们在 MainActivity中添加如下代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.floatingActionButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Hello Snackbar", Snackbar.LENGTH_LONG).show();
}
});
}
}
到此最简单的CoordinatorLayout +FloatingActionButton+SnackBar用法就结束了,是不是很简单呀^_^。
接下来我们就要看看稍微复杂的AppBarLayout,CollapsingToolbarLayout,Toolbar等了。
为了向别人、向世界证明自己而努力拼搏,而一旦你真的取得了成绩,才会明白:人无须向别人证明什么,只要你能超越自己。