编程语言
首页 > 编程语言> > Android应用程序小部件动态背景颜色与圆角android 2.3

Android应用程序小部件动态背景颜色与圆角android 2.3

作者:互联网

我在Android 2.3中动态更改小部件背景颜色的实现面临问题.

我使用这种方法实现:
http://oceanuz.wordpress.com/2013/07/11/widget-remoteviews-round-corners-background-and-colors/

所以我的WidgetLayout中有一个ImageView:

 <ImageView 
    android:id="@+id/widget_background_image"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/widget_bg_shape" />

这就是widget_bg_shape的样子:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <solid
        android:color="#496fb3"/>
    <corners
        android:radius="3dp" />
</shape>

我的代码根据用户首选项更改背景颜色:

private static void setBackgroundColor(Context pContext, int pWidgetID,
        RemoteViews remoteViews) {
    float[] color = { 218, 59 / 100F, 70 / 100F };
    int transparency = 192;
    SharedPreferences settings = pContext.getSharedPreferences("Widget"
            + pWidgetID, Context.MODE_PRIVATE);
    Color.colorToHSV(settings.getInt("color", Color.HSVToColor(color)),
            color);
    transparency = settings.getInt("transparency", transparency);
    remoteViews.setInt(R.id.widget_background_image, "setColorFilter",
            Color.HSVToColor(color));

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        remoteViews.setInt(R.id.widget_background_image, "setImageAlpha",
                transparency);
    } else {
        remoteViews.setInt(R.id.widget_background_image, "setAlpha",
                transparency);
    }

所以在较新的Android版本上,这样可以正常工作,但在Android 2.3上(使用android 2.3.6在Samsung S上进行测试,也有来自其他设备的一些用户反馈),背景总是完全透明的.

我发现,在remoteView上调用setColorFilter或setAlpha会导致Image完全透明或不透明.

根据上面的文章postet和引用的stackoverflow问题(Rounded corners on dynamicly set ImageView in widget?),这应该适用于android 2.2和obove.但就我而言,事实并非如此.

任何人都可以帮我吗?

解决方法:

迟到总比不到好:

我通过从android 2.x的背景可绘制形状中删除默认颜色来修复此问题

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <corners android:radius="3dp" />
</shape>

标签:android,transparency,widget,background-image,background-color
来源: https://codeday.me/bug/20190825/1714836.html