项目需要banner背景滑动渐变,看了网上别的滑动渐变demo,都是使用palette 在bitmap取点 来显示颜色,弊端太大,现在写的是可以根据固定颜色 直接滑动渐变,比较适合项目
先上图:
先导banner依赖
implementation 'com.youth.banner:banner:1.4.10'
ceshi_banner.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@SuppressLint("NewApi")
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
ArgbEvaluator evaluator = new ArgbEvaluator(); // ARGB求值器
if (position>=0&&position<bgList.size()-1){
evaluate = (Integer) evaluator.evaluate(positionOffset, bgList.get(position), bgList.get(position+1));
}else if (position==bgList.size()-1){
evaluate = (Integer) evaluator.evaluate(positionOffset, bgList.get(position), bgList.get(0));
}
ceshi_rela.setBackgroundColor(evaluate);
}
@SuppressLint("NewApi")
@Override
public void onPageSelected(int position) {///选中
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
final List<String>ceshlist=new ArrayList<>();
ceshlist.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556532665664&di=9ead9eb8a9fe2af9a01b0dd39f3e41f4&imgtype=0&src=http%3A%2F%2Fbpic.588ku.com%2Fback_pic%2F05%2F37%2F28%2F475a43591370453.jpg");
ceshlist.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556532613934&di=0be1c6bbf0441bd19ef6d4e3ce799263&imgtype=0&src=http%3A%2F%2Fpic96.nipic.com%2Ffile%2F20160430%2F7036970_215739900000_2.jpg");
ceshlist.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556532613936&di=4dd453940f49d9801826e6b820490957&imgtype=0&src=http%3A%2F%2Fpic161.nipic.com%2Ffile%2F20180410%2F26429156_154754410034_2.jpg");
ceshlist.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556532613935&di=39c387012e3d8fa2eef90129eaf83c5c&imgtype=0&src=http%3A%2F%2Fpic25.nipic.com%2F20121211%2F7031681_170238437383_2.jpg");
final List<Object> bgList = new ArrayList<>();
bgList.add(Color.parseColor("#c0130d"));
bgList.add(Color.parseColor("#C49718"));
bgList.add(Color.parseColor("#113CC0"));
bgList.add(Color.parseColor("#9B8C09"));
ceshi_banner.setImageLoader(new com.youth.banner.loader.ImageLoader() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
String s= (String) path;
Glide.with(context).load(s).into(imageView);
}
});
ceshi_banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);//设置圆形指示器与标题
ceshi_banner.setIndicatorGravity(BannerConfig.RIGHT);//设置指示器位置
ceshi_banner.setDelayTime(2000);//设置轮播时间
ceshi_banner.setImages(ceshlist);//设置图片源
ceshi_banner.start();