如何在Android上使图像透明?

70

我正在使用线性布局和框架布局。在线性布局中,我将一张图片作为背景,在框架布局中,我放置了一个imageView。在该imageView中,我添加了一张图片。

现在我想使第二张图片(也就是在imageView中的那张图片)透明。我该怎么做?


你需要从代码或XML中设置透明吗? - Rubycon
你能告诉我如何设置透明吗? - khan
https://dev59.com/wXI_5IYBdhLWcg3wK_3E - Shirish Herwade
13个回答

140

试试这个:

ImageView myImage = (ImageView) findViewById(R.id.myImage);
myImage.setAlpha(127); //value: [0-255]. Where 0 is fully transparent and 255 is fully opaque.

注意: setAlpha(int)已经被弃用,现在应该使用setAlpha(float),其中0表示完全透明,1表示完全不透明。使用方式如下:myImage.setAlpha(0.5f)


16
"setAlpha(int)"已过时,现在推荐使用"setAlpha(float)"。其中,值为0表示完全透明,值为1表示完全不透明。例如:"myImage.setAlpha(0.5f);" 表示将图片设置为半透明状态。 - gattsbr

105

android:alpha 在XML中实现以下效果:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/blah"
    android:alpha=".75"/>

6
在ImageView上设置一个id属性:
<ImageView android:id="@+id/myImage"

在你希望隐藏图片的代码中,你需要以下代码。 首先,你需要引用 ImageView:
ImageView myImage = (ImageView) findViewById(R.id.myImage);

然后,将可见性设置为 GONE:

myImage.setVisibility(View.GONE);

如果您想在其他地方显示代码,请以相同的方式将其设置为可见:
myImage.setVisibility(View.VISIBLE);

如果你指的是“完全透明”,上面的代码可以工作。如果你指的是“部分透明”,请使用以下方法:
int alphaAmount = 128; // Some value 0-255 where 0 is fully transparent and 255 is fully opaque
myImage.setAlpha(alphaAmount);

现在透明度也不起作用了。当我将可见性设置为GONE时,它的效果与设置为invisible相同。 - khan
修改了代码示例以支持部分透明度。我误解了原来的问题。 - Rich

5
如果您在XML文件中,可以使用以下内容使您的ImageView透明!
 android:background="@null" 

5
在较新版本的Android系统(至少在Android 4.2(Jelly Bean)之后),setAlpha(int value)方法已经过时。相反,使用setAlpha(float value)方法,该方法接受0到1之间的浮点数,其中0表示完全透明,而1表示没有透明度。

4

使用setAlpha(float alpha)设置透明度。下面的代码对我有效,其中使用了0-1之间的浮点alpha值。

  • 0:完全透明
  • 0.5 - 50%:半透明
  • 1:完全不透明

    ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView); imageView.setImageResource(mResources[position]); imageView.setAlpha(.80f);


4

由于 setAlpha int 方法已被弃用,现在可以使用 setImageAlpha (int) 方法。

ImageView img = (ImageView) findViewById(R.id.img_image);
img.setImageAlpha(127); //value: [0-255]. Where 0 is fully transparent and 255 is fully opaque.

2

类型为ImageView的方法setAlpha(int)已经过时。

建议使用

image.setImageAlpha(127);
//value: [0-255]. Where 0 is fully transparent and 255 is fully opaque.

2

在 ImageView 中,仅设置不透明度会使图像模糊,尝试添加 tint 属性。

 android:tint="#66000000"

它也可以通过编程来完成:
imageView.setColorFilter(R.color.transparent);

在您的colors.xml中需要定义透明颜色。

<color name="transparent">#66000000</color>

2

在XML中,使用:

android:background="@android:color/transparent"

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