【问题标题】:Android : Is it possible to change background color of ImageView with setColorFilter?Android:是否可以使用 setColorFilter 更改 ImageView 的背景颜色?
【发布时间】:2020-11-16 18:35:35
【问题描述】:

由于某些原因,我在使用 setBackgrouncolor() 时更改 ImageView 的背景颜色时遇到问题。我想要的是将 ImageView 的背景色更改为 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 叠加层中的其中一张图像具有白色背景而不是透明背景......所以没有错误。我的错!

【问题讨论】:

    标签: java android kotlin imageview android-imageview


    【解决方案1】:

    来源Android Reference

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

    此方法在 API 级别 29 中已弃用。请改用此方法:

    setColorFilter(android.graphics.ColorFilter)
    

    使用 BlendModeColorFilter 的实例

    示例:

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

    如果你想要它的透明度:

    imageView.setAlpha(0.5f);
    

    【讨论】:

      【解决方案2】:

      您的第一个代码块(如下)运行良好。在大多数情况下甚至没有必要,因为 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 等格式。

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-07
        • 2013-01-28
        • 1970-01-01
        • 2018-04-14
        • 2017-11-10
        相关资源
        最近更新 更多