使用调色板Palette在背景图中取色

来源:互联网 发布:smartmontools linux 编辑:程序博客网 时间:2024/06/05 05:52

Palette是Android.support.v7.graphics包中定义的用于提取背景中的颜色的类,该类用final修饰,不可被继承。


在使用Palette前,需要在build.gradle中加入依赖:
dependencies{
compile ‘com.android.support:palette-v7:23.1.1’
}


Palette可提取的颜色按类型可分为以下几种:

Vibrant ——动感的Vibrant Dark ——动感的亮Vibrant Light ——动感的暗Muted ——柔和的Muted Dark ——柔和的亮Muted Light ——柔和的暗

用几张图放入项目
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"                xmlns:app="http://schemas.android.com/apk/res-auto"                xmlns:tools="http://schemas.android.com/tools"                android:layout_width="match_parent"                android:layout_height="match_parent"                tools:context="com.feng.buttonsheetdialogtest.Main3Activity">    <Button        android:id="@+id/bt1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="bg1"        android:layout_marginBottom="53dp"        android:layout_alignParentBottom="true"        android:layout_alignParentStart="true"/>    <ImageView        android:id="@+id/iv_show"        android:layout_width="match_parent"        android:layout_height="200dp"        app:srcCompat="@drawable/bg"        android:layout_alignParentTop="true"        android:layout_alignParentStart="true"/>    <TextView        android:id="@+id/block"        android:layout_height="20dp"        android:layout_width="match_parent"        android:layout_below="@+id/iv_show"        android:text="分割线"        android:background="#666"        />    <View        android:id="@+id/v1"        android:layout_width="wrap_content"        android:layout_height="20dp"        android:layout_alignParentStart="true"        android:layout_below="@+id/block"        />    <View        android:id="@+id/v2"        android:layout_width="wrap_content"        android:layout_height="20dp"        android:layout_alignParentStart="true"        android:layout_below="@+id/v1"        />    <View        android:id="@+id/v3"        android:layout_width="wrap_content"        android:layout_height="20dp"        android:layout_alignParentStart="true"        android:layout_below="@+id/v2"        />    <View        android:id="@+id/v4"        android:layout_width="wrap_content"        android:layout_height="20dp"        android:layout_alignParentStart="true"        android:layout_below="@+id/v3"        />    <View        android:id="@+id/v5"        android:layout_width="wrap_content"        android:layout_height="20dp"        android:layout_alignParentStart="true"        android:layout_below="@+id/v4"        />    <View        android:id="@+id/v6"        android:layout_width="wrap_content"        android:layout_height="20dp"        android:layout_alignParentStart="true"        android:layout_below="@+id/v5"        />    <Button        android:id="@+id/bt2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignTop="@+id/bt1"        android:layout_toEndOf="@+id/bt1"        android:text="bg2"/>    <Button        android:id="@+id/bt3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignTop="@+id/bt2"        android:layout_toEndOf="@+id/bt2"        android:text="bg3"/>    <Button        android:id="@+id/bt4"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignTop="@+id/bt3"        android:layout_toEndOf="@+id/bt3"        android:text="bg4"/></RelativeLayout>
package com.feng.buttonsheetdialogtest;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Color;import android.os.Build;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.support.v7.graphics.Palette;import android.view.View;import android.view.Window;import android.widget.Button;import android.widget.ImageView;public class Main3Activity extends FragmentActivity {    private Bitmap mBitmap;    private View mV1;    private View mV2;    private View mV3;    private View mV4,mV5,mV6;    private ImageView mImageView;    Button mButton,bt2,bt3,bt4;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main3);        initView();    }    private void initView() {        mV1 = findViewById(R.id.v1);        mV2 = findViewById(R.id.v2);        mV3 = findViewById(R.id.v3);        mV4 = findViewById(R.id.v4);        mV5 = findViewById(R.id.v5);        mV6 = findViewById(R.id.v6);        mButton=(Button)findViewById(R.id.bt1);        bt2=(Button)findViewById(R.id.bt2);        bt3=(Button)findViewById(R.id.bt3);        bt4=(Button)findViewById(R.id.bt4);        mImageView = (ImageView) findViewById(R.id.iv_show);        mImageView.setScaleType(ImageView.ScaleType.FIT_XY);        mButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mImageView.setImageResource(R.drawable.bg);                mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg);                setBgColor();                mButton.setEnabled(false);            }        });        bt2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mImageView.setImageResource(R.drawable.bgg);                mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bgg);                setBgColor();                bt2.setEnabled(false);            }        });        bt3.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mImageView.setImageResource(R.drawable.bggg);                mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bggg);                setBgColor();                bt3.setEnabled(false);            }        });        bt4.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mImageView.setImageResource(R.drawable.bgggg);                mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bgggg);                setBgColor();                bt4.setEnabled(false);            }        });    }    private void setBgColor() {    /*如果在主线程中,我们可以使用异步的方式:*/        Palette.generateAsync(mBitmap, new Palette.PaletteAsyncListener() {            public void onGenerated(Palette palette) {                //柔和的                mV1.setBackgroundColor(palette.getMutedColor(Color.BLACK));//设置默认颜色                //鲜艳的暗色                mV2.setBackgroundColor(palette.getDarkMutedColor(Color.BLACK));                //柔和的亮色                mV3.setBackgroundColor(palette.getLightMutedColor(Color.BLACK));                //鲜艳的                mV4.setBackgroundColor(palette.getVibrantColor(Color.BLACK));                //鲜艳的暗色                mV5.setBackgroundColor(palette.getDarkVibrantColor(Color.BLACK));                //鲜艳的亮色                mV6.setBackgroundColor(palette.getLightVibrantColor(Color.BLACK));                if(Build.VERSION.SDK_INT>=21){                    Window window=getWindow();                    window.setStatusBarColor(palette.getVibrantColor(Color.BLACK));                    window.setNavigationBarColor(palette.getVibrantColor(Color.BLACK));                }            }        });    }}

效果图
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述


这个顺序就是这个颜色的取值
感觉还挺好用的