注意事项
CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout联合一起使用时,有一些注意点:
CoordinatorLayout作为布局的父布局容器。
AppBarLayout中给需要滑动的组件设置 app:layout_scrollFlags属性。
CoordinatorLayout中给滑动的组件设置app:layout_behavior属性
AppBarLayout的高度固定,不能用match_parent,使用wrap_content时子view必须设置固定高度
CollapsingToolbarLayout的子视图设置layout_collapseMode属性
关联悬浮视图设置app:layout_anchor,app:layout_anchorGravity属性
根据百分比去获取ARGB (透明度,红色,绿色,蓝色)颜色值:
/** 根据百分比改变颜色透明度 */
public int changeAlpha(int color, float fraction) {
int red = Color.red(color);
int green = Color.green(color);
int blue = Color.blue(color);
int alpha = (int) (Color.alpha(color) * fraction);
return Color.argb(alpha, red, green, blue);
}
监听AppBarLayout的滚动变化OnOffsetChangedListener来改变Toolbar的背景透明度颜色:
mAppBarLayout= (AppBarLayout) view.findViewById(R.id.AppFragment_AppBarLayout);
mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
mToolbar.setBackgroundColor(changeAlpha(getResources().getColor(R.color.colorPrimary),Math.abs(verticalOffset*1.0f)/appBarLayout.getTotalScrollRange()));
}
});