半透明的AppWidget?

时间:2011-05-13 18:04:03

标签: android android-appwidget

我有一个AppWidget,其布局在根目录下有一个LinearLayout。窗口小部件使用背景9补丁为窗口小部件提供框架。

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

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

透明度级别将动态更改,因此我无法使用半透明位图。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

据我所知,唯一的方法是使用半透明drawable(可能是9patch),因为似乎没有办法通过RemoteViews。

答案 2 :(得分:0)

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

使用relativelayout将图像视图定位在内容后面,在imageview中将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);