cómo agregar múltiples widgets en una aplicación?

Acabo de terminar mi widget de Android. Ahora necesito tener diferentes tamaños de este wiget para que el usuario pueda elegir. por ejemplo, necesito un widget de tamaño mediano, pequeño y grande. así que cuando el usuario instale la aplicación y mantenga presionada la pantalla de inicio y luego elija widget, en el menú del widget quiero que vea tres widgets con el mismo nombre de aplicación pero con el tamaño. algo como esto:

helloSmall helloMedium helloLarge

Tengo el medio listo, pero ¿cómo puedo hacer lo pequeño y lo grande en la misma aplicación? sabiendo que los tres tamaños contienen los mismos datos exactos y acciones, solo el tamaño y el fondo son diferentes.

Gracias.

Necesita una definición de receptor para cada tipo en su archivo de manifiesto, como:

            

Esto le permitiría tener la misma clase AppWidgetProvider para varios widgets, con diferentes nombres de widgets y diferentes tamaños definidos en el XML.

Ahora, si necesita más diferencias en sus widgets que lo que está en el XML, crearía una clase de widgets base que implementa todo el comportamiento común entre los diferentes tipos:

 public abstract class MyBaseWidget extends AppWidgetProvider 

Y luego, cada una de sus implementaciones concretas podría extender MyBaseWidget. Luego, en su archivo de manifiesto, tendría una definición de receptor para cada una de sus implementaciones concretas, como:

              

En realidad, Android: el nombre de cada widget debe ser diferente. Si va a hacer esto como en el ejemplo, solo un widget será visible en la lista de widgets.

Chicos, tuve el mismo problema.

También debe agregar un segundo proveedor de widgets;

             

Disfrutar

Ok, entonces básicamente necesitarás:

archivo de diseño para cada widget. ex: main_small.xml, main_medium.xml …

en el directorio xml agrega un proveedor para cada widget. ej: small_provider.xml, medium_provider.xml … y así sucesivamente (tenga en cuenta que si no tiene un directorio xml agréguelo en el directorio dibujable).

¡ahora que!

  • define un receptor en el manifiesto para cada widget. (al igual que el ejemplo en la respuesta principal)

  • puede usar el mismo diseño o diseño deferente. básicamente, esto depende de ti.

  • en tu proveedor deberías tener algo como esto:

   

asegúrese de que cada proveedor especifique el archivo de diseño de destino que desea usar. en este código, estoy pidiendo el archivo main.xml en el directorio de diseño. para mi widget medio, por ejemplo, tendré otro proveedor con el mismo código pero cambiaré la última línea

 > android:initialLayout="@layout/medium". 

Espero que esto ayude si no me dejas saber y puedo subir un ejemplo de trabajo en mi sitio web y puedes echarle un vistazo más de cerca. Por favor déjame saber cómo va.

la mejor de las suertes.

Alguna información extra para las otras respuestas …

  • Si está duplicando los archivos mencionados, y si su widget utiliza un Service para proporcionar alguna funcionalidad, es posible que tenga que duplicar su servicio.

  • Si duplica su Service , recuerde actualizar su manifiesto con el nuevo servicio , de lo contrario, el nuevo servicio no se ejecutará …

Esto desperdició algo de tiempo para mí.


Si usa cualquier BroadcastReceiver para enviar Intent a su Service duplicado … no olvide actualizar ese código también:

  • ahora debe enviar intenciones a cada uno de los servicios.