【问题标题】:Adding low opacity colored overlay on imageview在 imageview 上添加低不透明度彩色覆盖
【发布时间】:2021-05-01 08:12:18
【问题描述】:

我的应用程序中有一个 imageView,它显示一些像这样的背景图像:

我想像这样在它上面添加一些彩色覆盖(蓝色覆盖):

我用来执行此操作的代码是:

Picasso.with( context ).load( R.drawable.ic_nocover ).resize( targetWidth, targetHeight ).into( iv, new Callback() {
    @Override
    public void onSuccess() {
        tv.setText( title );
        iv.setBackgroundResource( R.drawable.ic_nocover );
        iv.setColorFilter(getRandomMaterialColor( context, "500" ), PorterDuff.Mode.SRC_ATOP);
    }

    @Override
    public void onError() {
        tv.setText( title );
        iv.setBackgroundResource( R.drawable.ic_nocover );
        iv.setColorFilter(getRandomMaterialColor( context, "500" ), PorterDuff.Mode.SRC_ATOP);
    }
} );

getRandomMaterialColor( context, "500" ) 是我创建的用于选择随机颜色的方法。

但我得到的结果只是没有任何覆盖的图像。

没有什么原因?

我的 XML 如下所示:

<androidx.cardview.widget.CardView
    android:id="@+id/imagecard"
    android:layout_width="110dp"
    android:layout_height="188dp"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    app:cardCornerRadius="10dp">

    <ImageView
        android:id="@+id/iv_BookCover"
        android:layout_width="110dp"
        android:layout_height="140dp"
        android:scaleType="fitXY" />

    <TextView
        android:id="@+id/tv_BookCover"
        android:layout_width="110dp"
        android:layout_height="140dp"
        android:fontFamily="@font/assistant_semibold"
        android:gravity="top|center"
        android:inputType="textMultiLine"
        android:paddingStart="4dp"
        android:paddingTop="20dp"
        android:paddingEnd="4dp"
        android:paddingBottom="20dp"
        android:scaleType="fitXY"
        android:textColor="@color/colorBlackText"
        android:textSize="18sp" />

</androidx.cardview.widget.CardView>

我试图不对 XML 进行任何更改并以编程方式进行。

谢谢

【问题讨论】:

    标签: java android imageview overlay porter-duff


    【解决方案1】:

    您的代码似乎没有问题。如果 getRandomMaterialColor() 返回一个有效的 int 值,包括有限的 alpha 通道(例如 0x3F0000FF),则覆盖效果应该如您所愿正确显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 2017-11-18
      • 2013-01-27
      • 2016-09-28
      • 1970-01-01
      • 2013-08-28
      相关资源
      最近更新 更多