transparente personalizar google editar como busqueda barra android widget background-image transparency background-color

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?