在Android小部件中,我如何给背景设置颜色,同时使其透明?请查看屏幕截图上时钟的背景。它是黑色的,但又是透明的。我该如何在自己的小部件上实现这个效果?我可以参考系统颜色吗,比如HTC Sense上的屏幕截图中的颜色?感谢任何提示!
你必须为你的资源指定一个 alpha 通道(即透明度通道)。
如果你在 XML 资源中使用标准颜色(例如来自 colors.xml 的颜色)来填充背景, 你可以通过更改前两个数字来指定 alpha 值。 示例格式:
<color name="transparent_red">#99FF0000</color>
这里的99表示alpha值,将其更改为FF将产生纯红色,将其更改为00将使整个颜色变为透明。通过更改中间的值来进行测试。
有关此详细信息,请查看此处。
如果您想使用实际的图片/位图,例如Sense One所做的那样, 您必须创建指定了alpha通道的PNG图像。这取决于您用于创建位图的软件。 我建议使用矢量图形程序(如Illustrator或Inkscape)来完成此操作,它们在指定颜色时具有alpha值。在那里创建后,将图像导出为PNG并将其添加到应用程序资源中。
<?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"
android:background="#TTRRGGBB
-- RR、GG、BB 分别代表十六进制红、绿、蓝色分量,TT 代表透明度。使用 TT = 80(十六进制)表示50%的不透明度,FF 表示完全不透明,00 表示完全透明。
或者使用带有透明度组件的 png 文件,就像您的屏幕截图一样。