半透明的AppWidget?

发布于 2024-11-06 18:19:54 字数 229 浏览 2 评论 0原文

我有一个 AppWidget,其布局在根部有一个 LinearLayout 。该小部件使用背景 9-patch 为小部件提供框架。

如何在小部件上设置 Alpha 通道?

我无法直接设置它,因为背景属性用于指定 9 补丁。它是一个 LinearLayout 而不是 ImageView,所以我不能使用 setAlpha(),那么如何使其半透明呢?

透明度级别会动态变化,因此我无法使用半透明位图。

I have an AppWidget where the layout has a LinearLayout at the root. The widget uses a background 9-patch to provide a frame for the widget.

How do I set the alpha channel on the widget?

I can't set it directly as the background attribute is being used to specify the 9-patch. It's a LinearLayout not an ImageView, so I can't use setAlpha(), so how do I make it semi-transparent?

The transparency level will change dynamically, so I am unable to use a semi-transparent bitmap.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

绮筵 2024-11-13 18:19:54

据我所知,执行此操作的唯一方法是使用半透明可绘制对象(可能是 9patch),因为似乎无法通过 RemoteViews 来执行此操作。

As far as I can see the only way to do this is to use a semi-transparent drawable (perhaps a 9patch) as there appears to be no way to do it via RemoteViews.

逐鹿 2024-11-13 18:19:54

您可以在 Android 2.2 及更高版本上的 RemoteViews 中动态设置透明度,方法是使用 imageview 显示背景并利用 imageview 的 setAlpha 方法。

使用相对布局将图像视图放置在内容后面,并在图像视图中将 src 设置为背景图像。请注意,我将图像设置为 src 而不是背景,以便我可以使用 setAlpha 方法。

布局:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/MainLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/BackgroundImageView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_margin="6dip"
            android:cropToPadding="true"
            android:scaleType="fitXY"
            android:src="@drawable/widget_background" >
        </ImageView>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/ContentLinearLayout"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="fill"
            android:layout_marginBottom="26dip"
            android:layout_marginLeft="14dip"
            android:layout_marginRight="14dip"
            android:layout_marginTop="14dip"
            android:clickable="true"
            android:clipChildren="false"
            android:clipToPadding="false"
            android:gravity="top|fill_horizontal"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/TextView01"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center"
                android:text="loading..."
                android:textSize="18dip"
                android:textStyle="bold" >
            </TextView>
        </LinearLayout>

    </RelativeLayout>

当您创建要在小部件中显示的 RemoteView 时,您可以使用通用 setInt 方法来访问 ImageView 上的 setAlpha 方法,如下所示:

setInt(R.id.BackgroundImageView, "setAlpha", alpha);

我还使用 setImageViewResource 从首选项中交换背景图像。

setImageViewResource(R.id.backgroundImageView, bgDrawable);

You can set the transparency dynamically in a RemoteViews on Android 2.2 and above by using an imageview to display the background and taking advantage of the setAlpha method of imageview.

Use a relativelayout to position an image view behind the content and within the imageview set the src to your background image. Note that I'm setting the image to src and not background so I can use the setAlpha method.

The layout:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/MainLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/BackgroundImageView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_margin="6dip"
            android:cropToPadding="true"
            android:scaleType="fitXY"
            android:src="@drawable/widget_background" >
        </ImageView>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/ContentLinearLayout"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="fill"
            android:layout_marginBottom="26dip"
            android:layout_marginLeft="14dip"
            android:layout_marginRight="14dip"
            android:layout_marginTop="14dip"
            android:clickable="true"
            android:clipChildren="false"
            android:clipToPadding="false"
            android:gravity="top|fill_horizontal"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/TextView01"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center"
                android:text="loading..."
                android:textSize="18dip"
                android:textStyle="bold" >
            </TextView>
        </LinearLayout>

    </RelativeLayout>

When you're creating the RemoteViews for display in the widget you can use the generic setInt method to access the setAlpha method on the ImageView like so:

setInt(R.id.BackgroundImageView, "setAlpha", alpha);

I also use setImageViewResource to swap out the background image from preferences.

setImageViewResource(R.id.backgroundImageView, bgDrawable);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文