透明小部件背景?

4
在Android小部件中,我如何给背景设置颜色,同时使其透明?请查看屏幕截图上时钟的背景。它是黑色的,但又是透明的。我该如何在自己的小部件上实现这个效果?我可以参考系统颜色吗,比如HTC Sense上的屏幕截图中的颜色?感谢任何提示!
3个回答

12

你必须为你的资源指定一个 alpha 通道(即透明度通道)。

如果你在 XML 资源中使用标准颜色(例如来自 colors.xml 的颜色)来填充背景, 你可以通过更改前两个数字来指定 alpha 值。 示例格式:

<color name="transparent_red">#99FF0000</color>

这里的99表示alpha值,将其更改为FF将产生纯红色,将其更改为00将使整个颜色变为透明。通过更改中间的值来进行测试。

有关此详细信息,请查看此处

如果您想使用实际的图片/位图,例如Sense One所做的那样, 您必须创建指定了alpha通道的PNG图像。这取决于您用于创建位图的软件。 我建议使用矢量图形程序(如Illustrator或Inkscape)来完成此操作,它们在指定颜色时具有alpha值。在那里创建后,将图像导出为PNG并将其添加到应用程序资源中。


12
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@android:color/transparent">

    <ImageView
        android:id="@+id/widget_image"
        android:layout_width="110sp"
        android:layout_height="110sp"
        android:layout_gravity="center"
        android:src="@drawable/appicon" />
</LinearLayout>

只需将布局的背景设置为透明。添加以下代码。这对我有用,它是一个小部件。

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

7

android:background="#TTRRGGBB -- RR、GG、BB 分别代表十六进制红、绿、蓝色分量,TT 代表透明度。使用 TT = 80(十六进制)表示50%的不透明度,FF 表示完全不透明,00 表示完全透明。

或者使用带有透明度组件的 png 文件,就像您的屏幕截图一样。


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