CoordinatorLayout,CollapsingToolbarLayout,AppBarLayout简单使用
2016-11-03 16:33
441 查看
通过学习http://www.jianshu.com/p/56c96fc7340f这篇文章和自己的学习,记录下自己的理解.
布局文件
//个人总结:
//CollapsingToolbarLayout相关属性解释
// CollapsingToolbarLayout设置title时,会覆盖掉Toolbar的设置title
// –>title:当titleEnable设置为true的时候,在toolbar展开的时候,显示大标题,toolbar收缩时,显示为toolbar上面的小标题。
// Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
// toolbar.setTitle(“HD TEST”);
// toolbar.setNavigationIcon(R.drawable.back);
// setSupportActionBar(toolbar);
// 这一块无效
// CollapsingToolbarLayout的属性关系
// –>scrimAnimationDuration:该属性控制toolbar收缩时,颜色变化的动画持续时间。
// 即颜色变为contentScrim所指定的颜色进行的动画所需要的时间
// –>expandedTitleGravity:指定toolbar展开时,title所在的位置。
// 类似的还有expandedTitleMargin、collapsedTitleGravity这些属性。
// app:expandedTitleMarginEnd=”20dp”和app:expandedTitleMarginStart=”10dp”
// 表示start距离左边间距,end即是右边,Gravity即是相对隐藏那一块内容的位置,比如
// center就是下拉后那一块的中心.
// –>collapsedTitleTextAppearance:指定toolbar收缩时,标题字体的样式,
// 类似的还有expandedTitleTextAppearance。
// app:contentScrim=设置背景色;
// –>contentScrim:当Toolbar收缩到一定程度时的所展现的主体颜色。即Toolbar的颜色。
// app:layout_scrollFlags:
// scroll 代表可以滑出屏幕
// –>* scroll:所有想要滑动的控件都要设置这个标志位。如果不设置这个标志位,那么View会固定不动。
// exitUntilCollapsed 可固定在屏幕顶部
// –>* exitUntilCollapsed:向上滑动时收缩当前View。但view可以被固定在顶部
// enterAlwaysCollapsed 显示的时候一下子出来的内容,设置的话只出现titlebar,不会出现隐藏的那一块内容
// 图片或者布局,不设置都会显示出来;
// –>enterAlwaysCollapsed:设置了minHeight,同时设置了该标志位的话,view会以最小高度进度屏幕,
// 当滑动控件滑动到顶部的时候才会拓展为完整的高度。
// enterAlways 代表toolbar也会滑出屏幕,然后下滑的时候展示.
// –>* enterAlways:设置了该标志位后,若View已经滑出屏幕,
// 此时手指向下滑,View会立刻出现,这是另一种使用场景。
FloatingActionButton
和一般按钮差不多,只不过可以app:layout_anchor=”@id/app_bar”这个和绑定的控件共同在一个CoordinatorLayout中, app:layout_anchorGravity=”end|bottom|right” 这个用来设置位置,相对上面那个id绑定的控件.
//
//基础布局格式
//最外层是CoordinatorLayout,宽高都是填充屏幕.可设置android:fitsSystemWindows=”true”
// 这主要是关于状态栏的设置,是否可填充到状态栏.
//然后先添加相应的AppBarLayout.宽是填充屏幕.高是包裹内容.id为android:id=”@+id/app_bar”;
//在AppBarLayout中嵌入CollapsingToolbarLayout.这一块代表滑动处理的那一块(标题栏和隐藏的内容(布局,图片等));
// CollapsingToolbarLayout宽高都是填充父布局,然后参照上面属性解释.
//在CollapsingToolbarLayout中,一般先嵌入隐藏的内容(布局,图片等),除了一般属性外
//还要设置 app:layout_collapseMode=,为了隐藏设置为”parallax”即是这块内容可一块滚动;还有一个值是”pin”代表悬浮顶部
//”parallax”一般配合app:layout_collapseParallaxMultiplier=”0.7”一般值在0-1之间.视差滚动效果因子.
//再嵌入 Toolbar,Toolbar的宽度填充父布局高度为android:layout_height=”?attr/actionBarSize”;(看大家都写的这个)
//id为android:id=”@+id/toolbar”;(这个好像固定的)可设置app:contentInsetLeft=”0dp”和app:contentInsetStart=”0dp”
//设置标题间距;app:layout_collapseMode=”pin”这个为了停留在顶部必须设置为”pin”;
//这情况是默认的toolbar标题,如果什么都不写就默认了.
//一般我们可以自定义标题的切换,可以放入两个布局,来回切换显示,可以设置透明度等.
//在代码中通过设置AppBarLayout.addOnOffsetChangedListener()设置监听,根据滑动的距离和
//可以活动的最大距离进行切换.如
// mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
//@Override
//public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
// if (isFirst){
// scrollDistance = appBarLayout.getTotalScrollRange();
// isFirst = false;
// }
// Log.i(“hh”, “verticalOffset=” + verticalOffset + “appBarLayout.getTotalScrollRange()=” + appBarLayout.getTotalScrollRange());
//// if (verticalOffset == 0){
//// //张开
//// mToolbar1.setVisibility(View.VISIBLE);
//// mToolbar2.setVisibility(View.GONE);
//// setToolbar1Alpha(255);
//// } else if (Math.abs(verticalOffset) == appBarLayout.getTotalScrollRange()) {
//// //收缩
//// mToolbar1.setVisibility(View.GONE);
//// mToolbar2.setVisibility(View.VISIBLE);
//// setToolbar2Alpha(255);
//// } else {
// int alpha = 100 - Math.abs(verticalOffset);
// if (alpha >= 0){
// if (View.VISIBLE != mToolbar1.getVisibility()){
// mToolbar1.setVisibility(View.VISIBLE);
// }
// if (View.GONE != mToolbar2.getVisibility()){
// mToolbar2.setVisibility(View.GONE);
// }
// setToolbar1Alpha(alpha * 255 / 100);
// }else {
// if (View.GONE != mToolbar1.getVisibility()){
// mToolbar1.setVisibility(View.GONE);
// }
// if (View.VISIBLE != mToolbar2.getVisibility()){
// mToolbar2.setVisibility(View.VISIBLE);
// }
// setToolbar2Alpha(Math.abs(alpha) * 255 / (scrollDistance - 100));
// }
//// int alpha = 255 - Math.abs(verticalOffset) - 150;
//// if(alpha <= 0){
//// //收缩toolbar
//// mToolbar1.setVisibility(View.GONE);
//// mToolbar2.setVisibility(View.VISIBLE);
//// setToolbar2Alpha(Math.abs(verticalOffset));
//// }else{
//// //张开toolbar
//// mToolbar1.setVisibility(View.VISIBLE);
//// mToolbar2.setVisibility(View.GONE);
//// setToolbar1Alpha(alpha);
//// }
//// }
// }
// });
// }
//
////设置展开时各控件的透明度
//public void setToolbar1Alpha(int alpha){
// mZhangdan.getDrawable().setAlpha(alpha);
// mZhangdan_txt.setTextColor(Color.argb(alpha,255,255,255));
// mTongxunlu.getDrawable().setAlpha(alpha);
// mJiahao.getDrawable().setAlpha(alpha);
// }
//
////设置闭合时各控件的透明度
//public void setToolbar2Alpha(int alpha){
// mZhangdan2.getDrawable().setAlpha(alpha);
// mShaoyishao.getDrawable().setAlpha(alpha);
// mSearch.getDrawable().setAlpha(alpha);
// mZhaoxiang.getDrawable().setAlpha(alpha);
// }
布局文件
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.example.jack.coordinatorlayouttest.ScrollingActivity"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/toolbar_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="@color/color1984D1" app:layout_scrollFlags="scroll|snap|exitUntilCollapsed" app:title="哈哈"> <!--app:layout_scrollFlags="scroll|enterAlwaysCollapsed|enterAlways"--> <!--app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"--> <include layout="@layout/shenghuo_head1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:layout_marginBottom="25dp" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.7"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" app:layout_collapseMode="pin"> <include android:id="@+id/toolbar1" layout="@layout/toolbar_head1" android:layout_width="match_parent" android:layout_height="match_parent" /> <include android:id="@+id/toolbar2" layout="@layout/toolbar_head2" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone"/> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_scrolling" /> <android.support.design.widget.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10dp" app:layout_anchor="@id/app_bar" app:layout_anchorGravity="end|bottom|right" /> </android.support.design.widget.CoordinatorLayout>
//个人总结:
//CollapsingToolbarLayout相关属性解释
// CollapsingToolbarLayout设置title时,会覆盖掉Toolbar的设置title
// –>title:当titleEnable设置为true的时候,在toolbar展开的时候,显示大标题,toolbar收缩时,显示为toolbar上面的小标题。
// Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
// toolbar.setTitle(“HD TEST”);
// toolbar.setNavigationIcon(R.drawable.back);
// setSupportActionBar(toolbar);
// 这一块无效
// CollapsingToolbarLayout的属性关系
// –>scrimAnimationDuration:该属性控制toolbar收缩时,颜色变化的动画持续时间。
// 即颜色变为contentScrim所指定的颜色进行的动画所需要的时间
// –>expandedTitleGravity:指定toolbar展开时,title所在的位置。
// 类似的还有expandedTitleMargin、collapsedTitleGravity这些属性。
// app:expandedTitleMarginEnd=”20dp”和app:expandedTitleMarginStart=”10dp”
// 表示start距离左边间距,end即是右边,Gravity即是相对隐藏那一块内容的位置,比如
// center就是下拉后那一块的中心.
// –>collapsedTitleTextAppearance:指定toolbar收缩时,标题字体的样式,
// 类似的还有expandedTitleTextAppearance。
// app:contentScrim=设置背景色;
// –>contentScrim:当Toolbar收缩到一定程度时的所展现的主体颜色。即Toolbar的颜色。
// app:layout_scrollFlags:
// scroll 代表可以滑出屏幕
// –>* scroll:所有想要滑动的控件都要设置这个标志位。如果不设置这个标志位,那么View会固定不动。
// exitUntilCollapsed 可固定在屏幕顶部
// –>* exitUntilCollapsed:向上滑动时收缩当前View。但view可以被固定在顶部
// enterAlwaysCollapsed 显示的时候一下子出来的内容,设置的话只出现titlebar,不会出现隐藏的那一块内容
// 图片或者布局,不设置都会显示出来;
// –>enterAlwaysCollapsed:设置了minHeight,同时设置了该标志位的话,view会以最小高度进度屏幕,
// 当滑动控件滑动到顶部的时候才会拓展为完整的高度。
// enterAlways 代表toolbar也会滑出屏幕,然后下滑的时候展示.
// –>* enterAlways:设置了该标志位后,若View已经滑出屏幕,
// 此时手指向下滑,View会立刻出现,这是另一种使用场景。
FloatingActionButton
和一般按钮差不多,只不过可以app:layout_anchor=”@id/app_bar”这个和绑定的控件共同在一个CoordinatorLayout中, app:layout_anchorGravity=”end|bottom|right” 这个用来设置位置,相对上面那个id绑定的控件.
//
//基础布局格式
//最外层是CoordinatorLayout,宽高都是填充屏幕.可设置android:fitsSystemWindows=”true”
// 这主要是关于状态栏的设置,是否可填充到状态栏.
//然后先添加相应的AppBarLayout.宽是填充屏幕.高是包裹内容.id为android:id=”@+id/app_bar”;
//在AppBarLayout中嵌入CollapsingToolbarLayout.这一块代表滑动处理的那一块(标题栏和隐藏的内容(布局,图片等));
// CollapsingToolbarLayout宽高都是填充父布局,然后参照上面属性解释.
//在CollapsingToolbarLayout中,一般先嵌入隐藏的内容(布局,图片等),除了一般属性外
//还要设置 app:layout_collapseMode=,为了隐藏设置为”parallax”即是这块内容可一块滚动;还有一个值是”pin”代表悬浮顶部
//”parallax”一般配合app:layout_collapseParallaxMultiplier=”0.7”一般值在0-1之间.视差滚动效果因子.
//再嵌入 Toolbar,Toolbar的宽度填充父布局高度为android:layout_height=”?attr/actionBarSize”;(看大家都写的这个)
//id为android:id=”@+id/toolbar”;(这个好像固定的)可设置app:contentInsetLeft=”0dp”和app:contentInsetStart=”0dp”
//设置标题间距;app:layout_collapseMode=”pin”这个为了停留在顶部必须设置为”pin”;
//这情况是默认的toolbar标题,如果什么都不写就默认了.
//一般我们可以自定义标题的切换,可以放入两个布局,来回切换显示,可以设置透明度等.
//在代码中通过设置AppBarLayout.addOnOffsetChangedListener()设置监听,根据滑动的距离和
//可以活动的最大距离进行切换.如
// mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
//@Override
//public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
// if (isFirst){
// scrollDistance = appBarLayout.getTotalScrollRange();
// isFirst = false;
// }
// Log.i(“hh”, “verticalOffset=” + verticalOffset + “appBarLayout.getTotalScrollRange()=” + appBarLayout.getTotalScrollRange());
//// if (verticalOffset == 0){
//// //张开
//// mToolbar1.setVisibility(View.VISIBLE);
//// mToolbar2.setVisibility(View.GONE);
//// setToolbar1Alpha(255);
//// } else if (Math.abs(verticalOffset) == appBarLayout.getTotalScrollRange()) {
//// //收缩
//// mToolbar1.setVisibility(View.GONE);
//// mToolbar2.setVisibility(View.VISIBLE);
//// setToolbar2Alpha(255);
//// } else {
// int alpha = 100 - Math.abs(verticalOffset);
// if (alpha >= 0){
// if (View.VISIBLE != mToolbar1.getVisibility()){
// mToolbar1.setVisibility(View.VISIBLE);
// }
// if (View.GONE != mToolbar2.getVisibility()){
// mToolbar2.setVisibility(View.GONE);
// }
// setToolbar1Alpha(alpha * 255 / 100);
// }else {
// if (View.GONE != mToolbar1.getVisibility()){
// mToolbar1.setVisibility(View.GONE);
// }
// if (View.VISIBLE != mToolbar2.getVisibility()){
// mToolbar2.setVisibility(View.VISIBLE);
// }
// setToolbar2Alpha(Math.abs(alpha) * 255 / (scrollDistance - 100));
// }
//// int alpha = 255 - Math.abs(verticalOffset) - 150;
//// if(alpha <= 0){
//// //收缩toolbar
//// mToolbar1.setVisibility(View.GONE);
//// mToolbar2.setVisibility(View.VISIBLE);
//// setToolbar2Alpha(Math.abs(verticalOffset));
//// }else{
//// //张开toolbar
//// mToolbar1.setVisibility(View.VISIBLE);
//// mToolbar2.setVisibility(View.GONE);
//// setToolbar1Alpha(alpha);
//// }
//// }
// }
// });
// }
//
////设置展开时各控件的透明度
//public void setToolbar1Alpha(int alpha){
// mZhangdan.getDrawable().setAlpha(alpha);
// mZhangdan_txt.setTextColor(Color.argb(alpha,255,255,255));
// mTongxunlu.getDrawable().setAlpha(alpha);
// mJiahao.getDrawable().setAlpha(alpha);
// }
//
////设置闭合时各控件的透明度
//public void setToolbar2Alpha(int alpha){
// mZhangdan2.getDrawable().setAlpha(alpha);
// mShaoyishao.getDrawable().setAlpha(alpha);
// mSearch.getDrawable().setAlpha(alpha);
// mZhaoxiang.getDrawable().setAlpha(alpha);
// }
相关文章推荐
- CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout,Toolbar,NestedScrollView,RecyclerView结合使用
- MaterialDesign学习篇(三),AppBarLayout、CollapsingToolbarLayout的使用
- Android 6.0 CollapsingToolbarLayout简单使用
- Android 6.0 AppBarLayout+CollapsingToolbarLayout+NestedScrollView简单使用
- Android学习系列Toolbar,AppBarLayout,CoordinatorLayout,CollapsingToolbarLayout使用小结
- Android学习系列Toolbar,AppBarLayout,CoordinatorLayout,CollapsingToolbarLayout使用小结
- Android Material Design(5) CoordinatorLayout,AppBarLayout,Toolbar,CollapsingToolbarLayout的使用
- Android4.4沉浸状态栏结合CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout等使用详解
- Android Material 之CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout、Toolbar 等的说明和使用
- CoordinatorLayout, AppBarLayout, CollapsingToolbarLayout使用
- UI之CoordinatorLayout、AppbarLayout、CollapsingToolbarLayout的使用
- CoordinatorLayout、AppbarLayout、CollapsingToolbarLayout、Toolbar结合使用
- AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用
- Android进阶之路 - CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout、Toolbar的详细使用
- CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout、Toolbar混合使用经验
- (三十七)FloatingActionButton、CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout 基本使用
- CollapsingToolbarLayout 介绍和简单使用
- 安卓Design包之CollapsingToolbarLayout(可折叠的工具栏布局)的简单使用
- CoordinatorLayout、AppBarLayout、 Toolbar、CollapsingToolbarLayout、NestedScrollView 综合使用,详细解析
- Android学习系列Toolbar,AppBarLayout,CoordinatorLayout,CollapsingToolbarLayout使用小结