Android 如何根据覆盖的ImageView的颜色更改文本的颜色?

Android 如何根据覆盖的ImageView的颜色更改文本的颜色?,android,android-layout,user-interface,imageview,color-detection,Android,Android Layout,User Interface,Imageview,Color Detection,因此,我在用户上传的ImageView上设置了带有白色文本标签的透明按钮。如果用户上传的图像大部分是白色的,那么按钮即使不是完全不可见的,也很难看到 有人知道一种获得ImageView源图片/可绘制图片平均颜色的方法吗?如果我能做到这一点,我可以将其与某个阈值进行比较,我可以反复尝试。。。如果我能得到这个,那么我可以把我按钮上文本的颜色改成这个颜色的反转版本…或者别的什么 就在这儿随地吐痰 当然,如果有人知道一个更好的方法,更多的信息将不胜感激,谢谢 你可以使用这个类 从: 您可以使用gette

因此,我在用户上传的
ImageView
上设置了带有白色文本标签的透明按钮。如果用户上传的图像大部分是白色的,那么按钮即使不是完全不可见的,也很难看到

有人知道一种获得
ImageView
源图片/可绘制图片平均颜色的方法吗?如果我能做到这一点,我可以将其与某个阈值进行比较,我可以反复尝试。。。如果我能得到这个,那么我可以把我按钮上文本的颜色改成这个颜色的反转版本…或者别的什么

就在这儿随地吐痰

当然,如果有人知道一个更好的方法,更多的信息将不胜感激,谢谢

你可以使用这个类

从:

您可以使用getter从图像中检索突出的颜色 类中的方法,例如
Palette.getVibrantColor()

palete.from()
需要一个
Bitmap
参数,因此您必须从
ImageView
获取它

像这样的方法应该会奏效:

Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
Palette colorPalette = Palette.from(bitmap).generate();
然后,您可以在此
调色板
实例上调用适当的方法以获得突出的颜色,例如:

int darkVibrantColor = colorPalette.getDarkVibrantColor(someDefaultColor);
查看此示例屏幕截图,了解
调色板如何识别颜色:



可以将“透明颜色”设置为“按钮视图”。所以,即使图像是白色的,按钮文本也是可见的。如果可以的话,别忘了竖起大拇指回答

您可以使用调色板在imageview中获取位图的颜色

    bitmap = BitmapFactory
                    .decodeResource(getResources(), R.drawable.header);

            Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
                @Override
                public void onGenerated(Palette palette) {

                     //Set normal shade to textview
                    int vibrantColor = palette.getVibrantColor(R.color.primary_500);

                     //Set darkershade to textview
                    int vibrantDarkColor = palette
                            .getDarkVibrantColor(R.color.primary_700);


                }
            });

检查这个:…一个更好的方法…-您可以使用透明渐变背景来保护按钮不受图像影响,就像材质设计指南(文本保护)中解释的那样。正如其中一个答案提到的,你可以用调色板库提取颜色,但你仍然不能得到100%的保护,因为你最终可能会在图像的正下方出现一块白色背景buttons@Luksprog是的,我想过,但我想这可能是临时解决办法。添加一个渐变叠加是一个好主意,我会考虑这样做。谢谢我想你误解了。按钮背景是透明的,但按钮文本是可见的。问题是按钮文本是白色的,所以当我的按钮所在的imageview有白色背景时,你看不到按钮。我的目标是在背景颜色为白色(或白色)时将按钮的文本从白色更改为黑色或其他颜色。好的,然后您应该从图像中提取颜色,并基于此更改文本颜色,您可以参考此示例“”@ripyde4非常好,谢谢!我看看明天能不能拿到这个。我会回到yaYes的工作很好,你认为问题出在哪里
    bitmap = BitmapFactory
                    .decodeResource(getResources(), R.drawable.header);

            Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
                @Override
                public void onGenerated(Palette palette) {

                     //Set normal shade to textview
                    int vibrantColor = palette.getVibrantColor(R.color.primary_500);

                     //Set darkershade to textview
                    int vibrantDarkColor = palette
                            .getDarkVibrantColor(R.color.primary_700);


                }
            });