个人练习代码库/Material Design Part1/Palette调色盘(待补充)

本文介绍如何使用Android的Palette库来提取图片中的主要颜色,并应用这些颜色到UI元素上,如背景色、状态栏颜色及文字颜色等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tips:M D主题 Theme.Material(dark)    Theme.Material.Light(light)    Theme.Material.Light.DarkActionBar

1.Palette实例化

// 同步

    Palette p = Palette.from(bitmap).generate();

    // 异步(建议)

    Palette.from(bitmap).generate(new PaletteAsyncListener() {

    public void onGenerated(Palette p) {

// Use generated instance } });

2.使用Palette提取颜色

    getVibrantSwatch()->充满活力的

    getDarkVibrantSwatch()->充满活力的黑

    getLightVibrantSwatch()->充满活力的亮色

    getMutedSwatch()->柔和的

    getDarkMutedSwatch()->柔和的黑

    getLightMutedSwatch()->柔和的亮色

3.从色样中提取相应颜色

    getPopulation() 样本中的像素数量

    getRgb() 颜色的RGB值

    getHsl() 颜色的HSL值

    getBodyTextColor() 主体文字的颜色值

    getTitleTextColor() 标题文字的颜色值

练习:

    

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.graphics.Palette;
import android.view.Window;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Bitmap  bitmap=BitmapFactory.decodeResource(getResources(),R.mipmap.robot);
        final TextView tv=findViewById(R.id.textView);
        //异步处理
        Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            public void onGenerated(@NonNull Palette p) {
                    Palette.Swatch swatch=p.getLightMutedSwatch();
                    if (swatch!=null){
                        tv.setBackgroundColor(swatch.getRgb());
                        Window window=getWindow();
                        window.setStatusBarColor(swatch.getRgb());
                        tv.setTextColor(swatch.getTitleTextColor());
                    }
                }
        });

    }
}
备注:https://blog.youkuaiyun.com/LABLENET/article/details/52340634(补充学习)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值