首页 > 解决方案 > 如何根据前景图像在android中动态更改状态栏的颜色?

问题描述

我想实现与我们在 WhatsApp 中看到的相同的功能,同时看到一个人的个人资料,状态栏的颜色会根据图像的颜色而变化。

标签: androidandroid-layoutuser-interfacematerial-designstatusbar

解决方案


它叫做 Pallete,使用下面的函数,只需传递你的位图图像

  private void setUpPalette(Bitmap bitmap) {
   // you passed your Bitmap image;
    Palette.from(bitmap).
            generate(new Palette.PaletteAsyncListener() {
                @Override
                public void onGenerated(Palette palette) {
                    if (palette != null) {

                       //default color is yellow
                       // set the color to toolbar, whatever
                        int extColor = palette.getVibrantColor(ContextCompat.getColor(MainActivity.this, R.color.yellow));
                         if (getWindow() != null) {
                                getWindow().setStatusBarColor(ContextCompat.getColor(this, extColor));
                                }
                    } else {
                         if (getWindow() != null) {
                                    getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.fail_safe));
                                                    }
                    }
                }
            });
}

推荐阅读