Palette类可以分析一张图片,取出这张图片的特征色,然后为View中的文字,背景等设置颜色,让整个界面在色调上看上去更和谐更美观。

使用Palette,首先要导入sdk\extras\android\support\v7\palette

fff6c98081bf8904098fb5e1bd59ff4b.gif

然后在你的工程中引入Palette工程

fff6c98081bf8904098fb5e1bd59ff4b.gif

接下来就可以使用了

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.drawable.gg1);

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

//暗鲜艳色

int darkVibrantColor=palette.getDarkVibrantColor(android.R.color.holo_blue_dark);

//暗柔和的颜色

int darkMutedColor=palette.getDarkMutedColor(android.R.color.holo_orange_dark);

//亮鲜艳色(淡色)

int lightVibrantColor=palette.getLightVibrantColor(android.R.color.holo_blue_bright);

//亮柔和色(淡色)

int lightMutedColor=palette.getLightMutedColor(android.R.color.holo_orange_light);

//柔和色

int mutedColor=palette.getMutedColor(android.R.color.holo_red_dark);

//鲜艳色

int vibrantColor=palette.getVibrantColor(android.R.color.holo_red_light);

final TextView tv_0 = (TextView) findViewById(R.id.tv_0);

final TextView tv_1 = (TextView) findViewById(R.id.tv_1);

final TextView tv_2 = (TextView) findViewById(R.id.tv_2);

tv_0.setBackgroundColor(darkVibrantColor);

tv_0.setTextColor(lightVibrantColor);

tv_1.setBackgroundColor(darkMutedColor);

tv_1.setTextColor(lightMutedColor);

tv_2.setBackgroundColor(mutedColor);

tv_2.setTextColor(vibrantColor);

}

}

效果图:

fff6c98081bf8904098fb5e1bd59ff4b.gif

Palette还有个异步的方法:

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

@Override

public void onGenerated(Palette palette) {

// TODO Auto-generated method stub

}

});

PS:不同版本的Palette可能用法不同,我用的是最新的Android Support Library 22.2

fff6c98081bf8904098fb5e1bd59ff4b.gif

大小: 9.5 KB

fff6c98081bf8904098fb5e1bd59ff4b.gif

大小: 31.6 KB

fff6c98081bf8904098fb5e1bd59ff4b.gif

大小: 47.4 KB

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐