如何根据覆盖的ImageView的颜色更改文本的颜色? [英] How can I change the color of my text based on the color of the ImageView it overlays?

查看:90
本文介绍了如何根据覆盖的ImageView的颜色更改文本的颜色?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我在用户上传的 ImageView 上设置了带有白色文本标签的透明按钮.如果用户上传的图片大部分是白色的,则按钮很难看清,即使不是完全看不见.

有人知道获取 ImageView 的源图片/可绘制对象的平均颜色的方法吗?如果可以,可以将其与某个阈值进行比较,可以尝试...如果可以,可以将按钮上文本的颜色更改为该颜色的反色..或其他东西?

只是在这里随便吐痰.

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

解决方案

您可以使用

So I've got transparant buttons with white text labels set up over a user uploaded ImageView. If the user uploads an image that is mostly white, then the buttons are hard to see if not completely invisible.

Does anyone know of a way to get the average color of a ImageView's source picture/drawable? If I can do this, I can compare it to a certain threshold I can trial and error for... If I can get this, then I can change the color of the text on my buttons to the inverted version of this color...or something??

Just idea spitting here..

And of course, if someone knows a better way, more info would be much appreciated, thanks!!

解决方案

You could use the Palette class.

From the developers guide:

You can retrieve the prominent colors from the image using the getter methods in the Palette class, such as Palette.getVibrantColor().

Palette.from() expects a Bitmap param, so you'll have to get it from your ImageView.

Something like this should work:

Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
Palette colorPalette = Palette.from(bitmap).generate();

And then you can call the appropriate methods on this Palette instance to get the prominent colors, for example:

int darkVibrantColor = colorPalette.getDarkVibrantColor(someDefaultColor);

Check out this example screenshot on how the Palette class recognizes colors:

这篇关于如何根据覆盖的ImageView的颜色更改文本的颜色?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆