Java 在imageview上添加低不透明度彩色覆盖
我的应用程序中有一个imageView,它显示一些背景图像,如下所示:Java 在imageview上添加低不透明度彩色覆盖,java,android,imageview,overlay,porter-duff,Java,Android,Imageview,Overlay,Porter Duff,我的应用程序中有一个imageView,它显示一些背景图像,如下所示: <androidx.cardview.widget.CardView android:id="@+id/imagecard" android:layout_width="110dp" android:layout_height="188dp" android:layout_marginStart="8dp"
<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>
我想在它上面添加一些彩色覆盖层,如下图所示(蓝色覆盖层):
我使用的代码是:
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中做任何更改,而是以编程方式进行更改
谢谢您的代码似乎没有问题。如果getRandomMaterialColor()返回一个有效的int值,包括有限的alpha通道(例如0x3F0000FF),则叠加效果应如预期的那样正确显示