如何改变图像的不透明度。

10

我已经将背景图片设置为一个ImageView,现在我想改变图像的透明度,但是当我写下以下代码来改变ImageView的透明度时,会导致背景图片从ImageView中删除,请问有什么方法可以在不移除背景图片的情况下改变ImageView的透明度。

我使用的代码是:

ImageView imageView = (ImageView) findViewById(R.id.image_view);

imageView.setBackgroundResource(R.drawable.theme1_page_header); // Set background image

int opacity = 100; // from 0 to 255
imageView.setBackgroundColor(opacity * 0x1000000); // change opacity of image
7个回答

34

Alpha最重要的部分是其值必须是十进制数。

0表示透明,1表示可见。

因此,0.5表示半透明。

在XML中,您可以这样写:

<ImageView
        android:layout_width="30dp"
        android:layout_height="35dp"
        android:id="@+id/imageView"
        android:alpha="0.4" // <-----------------  this is the fun part
        android:layout_alignParentRight="false"
        android:background="@drawable/imagename"
        android:layout_alignParentLeft="false"
        android:layout_alignParentTop="false"
        android:layout_alignWithParentIfMissing="false"
        android:layout_marginLeft="100dp"
        android:layout_alignParentBottom="false"
        android:layout_alignParentStart="false"
        android:layout_alignTop="@+id/bar"
        android:layout_marginTop="30dp"/>

12
你可以使用

imageView.setAlpha(yourValue); //  some value 0-255 where 0 is fully transparent and 255 is fully opaque

请参阅文档


1
谢谢回答,但是值不是0-255,它应该在0-1之间作为浮点数。 - smoothumut

5
ImageView imageView = (ImageView) findViewById(R.id.image_view);
Drawable dPage_header= getResources().getDrawable(R.drawable.theme1_page_header);

// setting the opacity (alpha)
dPage_header.setAlpha(10);

// setting the images on the ImageViews
imageView.setImageDrawable(dPage_header);

但这与你的第一个问题无关。你可以通过检查工作百分比来完成此操作。你可以创建一个方法,返回completedWorkPercentage()并将该值提供给dPage_header.setAlpha(completedWorkPercentage())。 - Talha
我不知道这项工作是什么?你能否发送详细的电子邮件至talhakosen@gmail.com - Talha
嗨,talhakosen...我已经回复了你的邮件,请你查收一下。 - Rahul

2

对于 Api >=16 的版本,请使用 setImageAlpha 代替 setAlpha,因为 setAlpha 方法将来会被弃用。

ImageView.setAlpha(int) 已经被 重命名ImageView.setImageAlpha(int),以避免混淆。详细解释请参见此处


1
在 Kotlin 中,我们可以像这样在代码中更改 alpha:

myImageView.alpha = 0.5f

将 alpha 值更改为 0.0f 到 1f 之间的任何值


1

在布局XML中使用此选项来设置透明度,以及将Android Material图标从黑色变为灰色。 android:alpha=0.5


0

选项1

使用 imageView.setAlpha(100)

如果您正在使用Android 2.3,则必须使用nineolddroids进行零长度动画的可怕黑客。

选项2

子类化ImageView并覆盖其onDraw()方法以透明地绘制图像。

选项3

实际上使用get/setPixel()修改图像像素。这将非常缓慢; 可能有更快的方法来完成此操作(例如使用renderscript)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接