personalizar - widget de aplicación para Android dinámico color de fondo con esquinas redondeadas 2.3 de Android
widget barra busqueda google android (1)
Mejor tarde que nunca:
Solucioné el problema eliminando el color predeterminado de la forma dibujable en segundo plano para 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>
Me enfrenta un problema con mi implementación de cambiar dinámicamente el color de fondo del widget en Android 2.3.
Utilicé este enfoque para mi implementación: http://oceanuz.wordpress.com/2013/07/11/widget-remoteviews-round-corners-background-and-colors/
Así que tengo un ImageView en mi WidgetLayout:
<ImageView
android:id="@+id/widget_background_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/widget_bg_shape" />
Así es como se ve el 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>
Y mi código cambia el color de fondo según las preferencias del usuario:
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);
}
Por lo tanto, en las versiones más nuevas de Android esto funciona bien, pero en Android 2.3 (prueba en Samsung S + con Android 2.3.6, también tenía algunos comentarios de los usuarios de otros dispositivos), el fondo es siempre completamente transparente.
Descubrí que, ya sea el setColorFilter o la llamada setAlpha en el remoteView causaban que la Imagen fuera completamente transparente o no estuviera allí.
De acuerdo con el artículo postet anterior y la pregunta de stackoverflow a la que se hace referencia (¿ Esquinas redondeadas en ImageView configurado dinámicamente en el widget? ), Esto debería funcionar en android 2.2 y obove. Pero en mi caso no es así.
¿Puede alguien ayudarme con esto?