Android 圆形颜色拾取器代码,Android颜色拾取Palette

首先Palette是干嘛的?

Palette是从Bitmap中提取颜色,然后可以把这个颜色设置给背景色、toolbar、TextView等等控件,使界面保持颜色风格统一协调。

效果图:

b32f6ffd7720bf94a4802736cc5b012b.png

2c5f5bd2e2a3eaf018fff76221f73870.png

ca8d9d7147dbe919e0c78fb00f80f1d4.png

b17ce8c2be5b3d27c026dec0d15a93dd.png

979a2919ddc7c8eaa7556c7239f0382b.png

a493ef3779a63b68e6a779975d1b5973.png

使用流程:

首先添加依赖:    compile files('libs/android-support-v7-palette.jar')

84cbeba77812e96e839220cae5e41629.png

添加jar包

接下来就是主界面代码:类中都有注释,界面就是4个fragment页面。

public class MainActivity extends AppCompatActivity {

@Bind(R.id.tabs)

TabLayout tabs;

@Bind(R.id.viewPager)

ViewPager viewPager;

@Bind(R.id.bt)

Button bT;

List fragmentList;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ButterKnife.bind(this);

setTabFragment();

bT.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(MainActivity.this, ListViewActivity.class);

startActivity(intent);

}

});

}

private void setTabFragment() {

//设置tabLayout

tabs.setTabMode(TabLayout.MODE_FIXED);//设置tab模式,当前为系统默认模式

List tabList = new ArrayList<>();

tabList.add("Tab1");

tabList.add("Tab2");

tabList.add("Tab3");

tabList.add("Tab4");

tabs.addTab(tabs.newTab().setText(tabList.get(0)));

tabs.addTab(tabs.newTab().setText(tabList.get(1)));

tabs.addTab(tabs.newTab().setText(tabList.get(2)));

tabs.addTab(tabs.newTab().setText(tabList.get(3)));

//添加fragment

fragmentList = new ArrayList<>();

Tab1Fragment tab1Fragment = new Tab1Fragment();

Tab2Fragment tab2Fragment = new Tab2Fragment();

Tab3Fragment tab3Fragment = new Tab3Fragment();

Tab4Fragment tab4Fragment = new Tab4Fragment();

fragmentList.add(tab1Fragment);

fragmentList.add(tab2Fragment);

fragmentList.add(tab3Fragment);

fragmentList.add(tab4Fragment);

//设置adapter

TabFragmentAdapter adapter = new TabFragmentAdapter(getSupportFragmentManager(), fragmentList, tabList);

viewPager.setAdapter(adapter);

tabs.setupWithViewPager(viewPager);//将TabLayout和ViewPager关联

tabs.setTabsFromPagerAdapter(adapter);//给Tabs设置适配器

//监听tabs页面切换

tabs.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {

@Override

public void onTabSelected(TabLayout.Tab tab) {

//页面切换时提取页面颜色

colorChange(tab.getPosition());

}

@Override

public void onTabUnselected(TabLayout.Tab tab) {

}

@Override

public void onTabReselected(TabLayout.Tab tab) {

}

});

//默认第一页时提取页面颜色

colorChange(0);

}

private static final int[] drawables = {R.mipmap.a3, R.mipmap.a2, R.mipmap.a3, R.mipmap.a2};

private void colorChange(int position) {

// 用来提取颜色的Bitmap

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), drawables[position]);

// 使用Palette来设置从Bitmap中提取出的颜色

Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {

@Override

public void onGenerated(Palette palette) {

Palette.Swatch vibrantSwatch = palette.getVibrantSwatch();

if (vibrantSwatch == null) return;

if (android.os.Build.VERSION.SDK_INT >= 21) {

Window window = getWindow();

//顶部状态栏颜色加深

window.setStatusBarColor(colorBurn(vibrantSwatch.getRgb()));

}

tabs.setBackgroundColor(vibrantSwatch.getRgb());

}

});

}

/*

* 颜色加深处理

* */

private int colorBurn(int RGBValues) {

int red = RGBValues >> 16 & 0xFF;

int green = RGBValues >> 8 & 0xFF;

int blue = RGBValues & 0xFF;

red = (int) Math.floor(red * (1 - 0.1));

green = (int) Math.floor(green * (1 - 0.1));

blue = (int) Math.floor(blue * (1 - 0.1));

return Color.rgb(red, green, blue);

}

}

项目下载地址:想了解的可以下载Demo来看一下

标签:Palette,tabs,void,拾取,int,add,new,Android,tabList

来源: https://blog.csdn.net/zhangkaiyazky/article/details/88049591

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值