解决CoordinatorLayout与recyclerview下拉刷新冲突的问题
backdrop = (ImageView)findViewById(R.id.backdrop);
appbar = (AppBarLayout) findViewById(R.id.appbar);
appbar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
//通过监听滑动距离设置图片的前景色透明度,达到添加渐变的效果,效果类似于QQ音乐首页的伸缩效果
backdrop.setColorFilter(changeAlpha(getResources().getColor(R.color.black),Math.abs(verticalOffset*1.0f)/appBarLayout.getTotalScrollRange()));
//verticalOffset == 0表示图片已经全部展开,否则的话为压缩状态
if (verticalOffset == 0) {
swipeToLoadLayout.setRefreshEnabled(true);
} else {
swipeToLoadLayout.setRefreshEnabled(false);
}
}
});
changeAlpha方法的代码如下
/** 根据百分比改变颜色透明度 */
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);
}
如果CollapsingToolbarLayout中的图片在 伸缩的时候压缩的图片区域全部为黑色,解决办法是检查布局文件中CollapsingToolbarLayout是否有以下的属性,如果有,去掉即可
app:contentScrim="?attr/colorPrimary"