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