如何在Android中以编程方式设置图像视图的着色?

6 浏览
0 Comments

如何在Android中以编程方式设置图像视图的着色?

需要为一个图像视图设置色调...我是这样使用的:\n

imageView.setColorFilter(R.color.blue,android.graphics.PorterDuff.Mode.MULTIPLY);

\n但是它没有改变...

0
0 Comments

问题:如何在Android中以编程方式为ImageView设置色调?

原因:该问题的出现可能是因为用户想要在应用程序中动态地为ImageView设置一个色调,以改变图像的外观,而不是在布局文件中静态地设置。

解决方法:用户可以使用setColorFilter()方法为ImageView设置色调。以下是一种可能的解决方法:

mImageView.setColorFilter(ContextCompat.getColor(getContext(), R.color.green_500));

或者

mImageView.setColorFilter(getContext().getResources().getColor(R.color.green_500));

这些方法将为ImageView应用一个颜色滤镜,以实现所需的色调效果。在这种情况下,颜色是通过获取资源文件中定义的颜色值来指定的(例如R.color.green_500)。这些方法的参数可以根据需要进行调整。

0
0 Comments

问题的原因是:之前的答案都提到了使用setColorFilter方法,但这并不是最初提问者所询问的。提问者在一个回答中找到了正确的方向,但该方法只适用于API 21及以上的版本。为了在所有Android版本上设置图片视图的颜色,可以使用ImageViewCompat类。

解决方法是:使用ImageViewCompat.setImageTintList(imageView, ColorStateList.valueOf(yourTint));方法来设置颜色。注意,这里的yourTint必须是一个"color int"。如果你有一个像R.color.blue这样的颜色资源,你需要先加载颜色int:ContextCompat.getColor(context, R.color.blue);。这个方法只适用于具有AppCompat主题的xml ImageView实例或AppCompatImageView子类。

感谢你的解答,但这个问题是在2013年提出的,而ImageViewCompat和AppCompatImageView是在2017年6月的v4支持库25.4.0中发布的,而AppCompatImageView是在2016年12月的v4支持库25.1.0中发布的。

当然,你在你的答案中没有适当地提到这一点,即你的解决方法是新的,需要更新的支持库25.4.0及以上版本,因为低版本的支持库中没有这个类,所以没有人能够找到它!顺便说一句,我已经编辑了答案。祝你有个愉快的一天!

0
0 Comments

问题的出现原因:用户想要在Android应用程序中以编程方式设置图像视图的着色。

解决方法:可以通过以下方式在代码中轻松更改着色:

imageView.setColorFilter(Color.argb(255, 255, 255, 255)); // 白色着色

如果需要颜色着色,则可以使用以下代码:

imageView.setColorFilter(ContextCompat.getColor(context, R.color.COLOR_YOUR_COLOR), android.graphics.PorterDuff.Mode.MULTIPLY);

对于矢量图形,可以使用以下代码:

imageView.setColorFilter(ContextCompat.getColor(context, R.color.COLOR_YOUR_COLOR), android.graphics.PorterDuff.Mode.SRC_IN);

更多信息:public final void setColorFilter (int color, PorterDuff.Mode mode)

在XML中,使用`android:tint="/blue"`无法在使用Glide加载图像时生效。

用户遇到了一个问题,即在图像视图中使用代码设置颜色需要很长时间。

`android:tint`属性只适用于Android 21及以上版本。

`setTint`方法在所有Android版本上都有效,可能你是在说`drawableTint`?

问题实际上是如何以编程方式设置着色,而不是通过XML。阅读更多信息:developer.android.com/reference/android/widget/…

`PorterDuff.Mode.MULTIPLY`在我的情况下不起作用,我使用了`PorterDuff.Mode.SRC_IN`并且它起作用。

在我的情况下也是如此。在Android 8中,`PorterDuff.Mode.MULTIPLY`对矢量图形无效,但`PorterDuff.Mode.SRC_IN`有效。

在我的情况下也是如此。在Android 6.0.1 MXB48T中,`PorterDuff.Mode.MULTIPLY`对矢量图形无效,但`PorterDuff.Mode.SRC_IN`有效。

我遇到了一个有趣的问题。尽管我使用了上述方法,但在三星Note 3设备上不起作用。后来我发现了一个有趣的情况:当初始着色从XML中给出时,无法通过这些方法动态更改它。解决方法非常简单,我只需从XML中删除着色属性,然后也可以动态设置初始着色,然后就可以了。希望这可以为他人节省一些时间。

我试图对一个带有PNG图像的`ImageButton`进行着色,使用`DrawableCompat.setTint(v.getDrawable(), ContextCompat.getColor(getContext(), R.color.gold));`在API 19上无效,但是使用`v.setColorFilter(ContextCompat.getColor(getContext(), R.color.gold), android.graphics.PorterDuff.Mode.SRC_IN);`有效。

更新应该引用我的答案,因为你从那里得到了答案:stackoverflow.com/a/45571812/7399050

当然,你没有在你的答案中正确提到这一点,你的解决方法是新的,需要支持库25.4.0及以上版本,因为低版本的支持库没有这个类,所以没有人能够找到它!顺便说一句,我编辑了答案:)祝你愉快...

对于使用数据绑定+Lenovo A7000-a+矢量图形的情况,它完全正常工作。

ImageView imageViewIcon = (ImageView) listItem.findViewById(R.id.imageViewIcon); 
imageViewIcon.setColorFilter(getContext().getResources().getColor(R.color.blue));

如果着色是通过XML设置的,这种方法不起作用。请从XML中删除着色,并通过此方法以编程方式设置。

0