【发布时间】:2011-07-03 12:46:07
【问题描述】:
在 Android 小部件上,我怎样才能给背景一个颜色,但同时又是透明的?请在屏幕截图中查看时钟的背景。这是一个黑色但透明的背景。我怎样才能在我自己的小部件上做到这一点?我是否也可以参考系统颜色,例如 HTC Sense 屏幕截图中的颜色?感谢您的任何提示!
【问题讨论】:
标签: android android-layout android-widget transparency
在 Android 小部件上,我怎样才能给背景一个颜色,但同时又是透明的?请在屏幕截图中查看时钟的背景。这是一个黑色但透明的背景。我怎样才能在我自己的小部件上做到这一点?我是否也可以参考系统颜色,例如 HTC Sense 屏幕截图中的颜色?感谢您的任何提示!
【问题讨论】:
标签: android android-layout android-widget transparency
您必须为您的资源指定一个 alpha 通道(=透明通道)。
如果您在 XML res 中使用标准颜色(例如来自您的 colors.xml)来填充背景, 您可以通过更改前两个数字来指定 alpha。 示例格式:
<color name="transparent_red">#99FF0000</color>
这里的 99 表示 alpha 值,将其更改为 FF 将产生纯红色,将其更改为 00 将使整个颜色不可见。只需通过更改中间值来测试一下。
详情请看here。
如果您想使用实际的图片/位图,就像感觉一样, 您必须创建带有指定 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,就像您的屏幕截图所使用的那样。
【讨论】: