6

我想在我的主应用程序屏幕上添加具有透明背景的图像按钮。我已经在 GIMP 中创建了图像,并将它们保存为 png 格式的透明背景,但是当我在 Eclipse 中将它们添加到我的 android 应用程序时,它们显示为白色背景。如何在我的代码中删除它?

4

5 回答 5

11

尝试使用 null 作为 xml 布局中图像按钮的背景。

android:background="@null"
于 2012-04-17T15:22:35.927 回答
1

透明背景通常在 Photoshop 中使用时有效,如果不是,则必须设置图像边框周围像素的 alpha 位

使用alpha-masking(alpha blending 的子集,谷歌他们了解更多)。

一点理论: 根据位图中每个像素的 alpha 位(半透明位),确定该像素与覆盖像素的混合程度。考虑到极端情况,如果 alpha 为 255,则使用覆盖像素而不是覆盖像素(通常情况下为完全不透明);如果 alpha 为 0,则覆盖像素将被忽略(透明)。对于介于两者之间的其他 alpha:有混合。

在您的情况下,您必须使边框的 alpha为零,以实现完全混合。概述所有步骤:。

  1. 要使用的可绘制对象不能是 JPEG(JPEG 不存储每个像素的 alpha 值)。去PNG

    2.您需要事先以这种方式创建并保持您的位图可绘制(使用 google 进行 alpha 混合 PNG),以使边框的 alpha 值为零(例如使用 Paint.NET 等软件)。

  2. 如果图像是动态创建的,则需要使用混合方程(有关详细信息,请阅读 Porter 和 Duff 的材料)。

    例如,这是具有透明像素的 PNG 图像,其 alpha 0 不同于字母本身
    带有 alpha 混合的原始 PNG

aplha 在彩色背景上混合了 PNG

以上是 Activity 彩色背景上的 alpha 混合 PNG。我希望这是您真正想要实现的目标。

于 2012-04-17T15:24:55.677 回答
0

你可以设置

android:background="@null"

在 XML

于 2012-04-17T15:22:09.187 回答
0

我在我的 .aspx 页面上遇到了同样的问题 - 添加一个可以添加到收藏夹功能和从中删除的功能。我知道该图像是具有透明背景的 .gif 图像格式 - 但正如这里提到的,它在 IE9 和 Chrome 的浏览器中显示为白色方形背景。

我添加了这个,它解决了这个问题 - 但你必须确保 .gif 或图像确实也有透明背景:

<asp:ImageButton runat="server" ID="lnkFavorite" BackColor="Transparent" AlternateText="Add Favorite" CommandName="Favorite"
ImageUrl="Images/MakeFavorite_30.png" ToolTip="Click to add to the My Favorite Threads grid."
    CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") + ";" + Eval("FavoriteUserID")%>' />

BackColor="Transparent"属性为我做到了!我希望这也有帮助!

拉斯

于 2014-01-15T15:26:35.657 回答
0

5年后在这里回答与Android L +的兼容性。

为了在 ImageButton 上使用 PNG(透明)图像作为背景,您应该使用属性background而不是src

     <ImageButton
        android:id="@+id/imageProg"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:onClick="doStuff"
        android:background="@drawable/ic_stuff"
于 2019-10-10T14:36:50.713 回答