android:可以用setcolorfilter改变imageview的背景色吗?

pgky5nke  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(423)

由于某些原因,我在使用setbackgrouncolor()时更改imageview的背景色时遇到问题。我想要的是将imageview的backgroundcolor更改为color.transparent。还有别的办法吗

ImageView iv = (ImageView)findViewById(R.id.myImageView);
iv.setBackgroundColor(Color.TRANSPARENT);

将imageview的背景色更改为透明。
例如,可以使用setcolorfilter()完成吗?比如:(用什么方便的方式?)

ImageView iv = (ImageView)findViewById(R.id.myImageView);
iv.setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);

或者其他解决方案?
谢谢!
我的回答是:
我没有看到我放在imageviews叠加图中的一个图像有白色背景而不是透明背景。。。所以,没有虫子。我错了!

rjee0c15

rjee0c151#

源android参考

public void setColorFilter (int color,PorterDuff.Mode mode)

api级别29中不推荐使用此方法。请改用此方法:

setColorFilter(android.graphics.ColorFilter)

使用blendModelColorFilter示例
例子:

iv.setColorFilter(new BlendModeColorFilter(getResources().getColor(R.color.White), BlendMode.SRC_IN));

如果你想要它的透明度:

imageView.setAlpha(0.5f);
2skhul33

2skhul332#

您的第一个代码块(如下)工作正常。因为imageview的默认背景色是透明的,所以在大多数情况下甚至没有必要这样做。

ImageView iv = (ImageView)findViewById(R.id.myImageView);
iv.setBackgroundColor(Color.TRANSPARENT);

我通过在一个空白的活动布局中创建一个imageview并给它一个红色的背景色来测试它。然后我将您的代码添加到活动的oncreate()方法中,当我运行它时,背景色变得透明,因为白色的布局背景色显示了出来。您可以使用以下代码自己测试。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/myImageView"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#FF0000" />

</FrameLayout>

我不知道你到底想用一个透明的背景做什么,但是如果你把一个jpg图像加载到imageview中,除非你修改显示它的画布,否则透明度将不受支持。如果您希望在图像中支持透明度,则需要使用svg或png等格式。
希望这有帮助!

相关问题