记CoordinatorLayout的一些使用技巧

解决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"

猜你喜欢

转载自blog.csdn.net/yann02/article/details/82630278