CollapsingToolbarLayout + Palette

一、CollapsingToolbarLayout

Android中的这个组件,是滑动的Toolbar,且Toolbar里面可以显示自定义的布局。它主要用于两个方面:
1、当做普通的FrameLayout作为根布局使用
2、作为一个或者多个子View进行复杂交互的容器
CoordinatorLayout 为我们提供了一个叫做Behavior的东西,我们基本上的复杂交互都是使用Behavior来协调完成。

示例如下:
(1)添加依赖包 implementation 'com.android.support:design:28.0.0'
(2)界面布局 其中的资源文件自己可以随便在网上找些。




    

        

             

            
        
    

    
        

            
        
    

(3)Java文件中未添加其他代码
CollapsingToolbarLayout + Palette_第1张图片

二、Palette

调色板组件可以取到图片中柔和或深色或着其他颜色,并将toolbar设置成这种颜色。
Modle.gradle 中添加 implementation 'com.android.support:palette-v7:28.0.0'
(1)界面布局同上
(2)MainActivity.java
取 CollapsingToolbarLayout 里面 ImageView 的颜色,将其设置为状态栏的颜色。 状态栏的颜色由CollapsingToolbarLayout 组件的 contentScrim 属性决定。

public class MainActivity extends AppCompatActivity {
    private ImageView ivHeader;
    private CollapsingToolbarLayout collapsingToolbarLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ivHeader = findViewById(R.id.iv_header);
        collapsingToolbarLayout = findViewById(R.id.ctl_toolbar);
        BitmapDrawable bitmapDrawable = (BitmapDrawable) ivHeader.getDrawable();
        Bitmap bitmap = bitmapDrawable.getBitmap();

        Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
            @Override
            public void onGenerated(@Nullable Palette palette) {
               int color = palette.getLightMutedColor(Color.RED);  //取不到图片的颜色时,设置为red
                collapsingToolbarLayout.setContentScrimColor(color);
            }
        });
    }
}  

CollapsingToolbarLayout + Palette_第2张图片

你可能感兴趣的:(Android,Palette)