10

我有一个背景图像设置为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
4

7 回答 7

32

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"/>
于 2013-08-25T20:50:09.093 回答
11

You can use

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

See the documentation

于 2012-12-11T11:28:06.350 回答
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);
于 2012-12-11T11:28:17.273 回答
2

对于 API >=16 。使用 setImageAlpha 作为您的练习,因为 setAlpha 将在未来被弃用。`

ImageView.setAlpha(int)一直renamedImageView.setImageAlpha(int)避免混淆。在此处查看详细说明

于 2016-12-22T05:52:46.080 回答
1

在布局 xml 中使用此选项以实现不透明度,并将 Android Material 图标从黑色变为灰色。安卓:阿尔法=0.5

于 2016-09-16T14:20:25.253 回答
1

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

myImageView.alpha = 0.5f

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

于 2019-06-29T09:58:08.900 回答
0

选项1

使用imageView.setAlpha(100).

如果您使用的是 Android 2.3,则必须使用 Nineolddroids 对零长度动画进行可怕的破解。

选项 2

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

选项 3

实际上使用get/setPixel(). 不过这会很慢;可能有更快的方法来做到这一点(例如使用渲染脚本)。

于 2012-12-11T11:29:09.443 回答