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

 手机用户2502939965 发布于 2023-01-07 13:38

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

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

所以我的WidgetLayout中有一个ImageView:

 

这就是widget_bg_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上(测试三星S +与android 2.3.6,还有一些来自其他设备的用户反馈)背景总是完全透明的.

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

根据上面的文章postet和引用的stackoverflow问题(在widget中动态设置ImageView的圆角?)这应该适用于android 2.2和obove.但就我而言,事实并非如此.

任何人都可以帮我吗?

1 个回答
  • 迟到总比不到好:

    我通过从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>
    

    2023-01-07 13:39 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有