AppBarLayout 应用栏布局
google在L中推出了新的安卓设计理念-Material Design,同时也推出了不少的新控件,AppBarLayout就是其中之一。AppBarLayout继承自垂直方向的LinearLayout,不过在此基础上添加了滑动手势的处理,以便开发者结合其他控件实现更好的交互。通常内部设置一个子View,设置scrollflags值,结合可滑动的view(NestedScrollView,RecyclerView等)滑动的改变,响应预期中的动作Behavior.
在开发中,通常至少会结合CoordinatorLayout,Toolbar+一个可滑动的view来使用,需要注意的是appbarlayout的使用离不开CoordinatorLayout,必须作为CoordinatorLayout的子布局使用,appbarlayout的子view通过xml属性app:layout_scrollFlags或者代码setScrollFlags(int flag)来设置相应的滑动标记
在开发中要想快速成长,更多是靠个人的理解及总结,对某个知识点理解透彻了,稍加总结会发现知识点长时间也不会忘记。就像对于appbarlayout,我个人目前的对其理解就是,能够让子view在CoordinatorLayout(协调布局)这个根布局中完成很好的滑动联动效果,也就是内部处理了手势滑动,根据子view的scrollflag来操作子view。
关联点
主要讲下继承,api,scrollflag
继承
api
void addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener listener)
//添加一个偏移量改变监听
AppBarLayout.LayoutParams generateLayoutParams(AttributeSet attrs)
//基于提供的属性集返回一个新的布局参数
float getTargetElevation()
//获取appbarlayout的高度值
final int getTotalScrollRange()
/获得所有子控件的滑动范围
void removeOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener listener)
//移除偏移量改变监听
void setExpanded(boolean expanded)
设置此appbarlayou是否展开
void setExpanded(boolean expanded, boolean animate)
//设置appbarlayou是否展开,如果已经设置了动画,animate代表是否设置转换动画
void setOrientation(int orientation)
//设置布局方向
void setTargetElevation(float elevation)
//当appbarlayo