如何根据布局背景图像颜色更改图像backarrow颜色?

时间:2018-08-28 07:14:45

标签: android

Bitmap bitmap = ((BitmapDrawable)itemUserProfileBinding.ivItemUserProfile.getDrawable()).getBitmap();

       // Bitmap imageProfile = BitmapFactory.decodeResource(activity.getResources(),arrayList.get(position).getProfile());
        int pixel = bitmap.getPixel(20,20);

        int redValue = Color.red(pixel);
        int blueValue = Color.blue(pixel);
        int greenValue = Color.green(pixel);

        int invertedRed = 255 - redValue;
        int invertedGreen = 255 - greenValue;
        int invertedBlue = 255 - blueValue;

        itemUserProfileBinding.ivUserProfileBackArrow.setColorFilter(Color.argb(255, invertedRed, invertedGreen, invertedBlue));

在上面的代码中,itemUserProfileBinding.ivItemUserProfile是我的背景imageView,itemUserProfileBinding.ivUserProfileBackArrow是我的自定义工具栏后退箭头imageView。

我已经在上面尝试过了,但是没有用,请任何人可以帮助我。

预先感谢

2 个答案:

答案 0 :(得分:0)

我不太了解您的问题,但是如果您想反转完整的位图,则获取图像中的每个像素,然后反转其RGB值。

如果itemUserProfileBinding.ivUserProfileBackArrow是您的imageview,那么我认为您应该首先从imageview获取位图,然后反转该位图的颜色,然后将反转的位图设置为您的imageview。

答案 1 :(得分:0)

您可以使用Palette类生成颜色并相应地更改颜色

//Gradle dependency 
dependencies {
   compile 'com.android.support:palette-v7:2x.x.x'
 }

// Java
Palette.from(bitmap).generate(new PaletteAsyncListener() {
   public void onGenerated(Palette p) {
     // Use generated instance
     // this is an Async call, You will get following colors in respect to bitmap

    /*Vibrant
     Vibrant Dark
     Vibrant Light
     Muted
     Muted Dark
     Muted Light*/

     itemUserProfileBinding.ivUserProfileBackArrow.setColorFilter(p.getMuted(0x000000));

   }
});