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

标签 android widget background-image transparency background-color

我在 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 调用导致图像完全透明或不存在。

根据上面的文章和引用的 stackoverflow 问题 (Rounded corners on dynamicly set ImageView in widget?),这应该适用于 android 2.2 及更高版本。但就我而言,情况并非如此。

谁能帮我解决这个问题?

最佳答案

迟到总比不到好:

我通过从 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 应用程序小部件动态背景颜色与圆角 android 2.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24447439/

相关文章:

android - 带文件夹过滤器的图库

android - 在某些设备上禁用时 EditText 不可读

javascript - 私有(private) javascript 小部件

ios - 今日扩展 iOS 10 Swift,显示较少

css - Internet Explorer 中的多个背景图像

svg - 尝试使用 SVG 作为背景时模块解析失败

css - 响应式 css 背景图片

android - 如何使用 ffmpeg 从应用程序捕获的视频创建视频拼贴?

android - Activity 中的多个 ViewPagers

javascript - 如何在 gridster 中的拖动停止事件中获取新的 col 和 row