¿Cómo crear un widget dinámico de una aplicación de Android?

Requisitos previos: ¿Cómo crear un widget básico de una aplicación de Android?

Los widgets son los elementos de la interfaz de usuario proporcionados por una aplicación para acceder a algunas de sus funciones de forma remota, ya sea desde las pantallas de inicio o las pantallas de bloqueo. Los widgets pueden ser estáticos o dinámicos , lo que significa que los elementos de visualización no cambian (estáticos) ni cambian (dinámicos) con el tiempo. A través de este artículo, demostremos la implementación de un widget dinámico . En nuestro caso, cambiaremos la visualización con respecto al tiempo usando un Thread . Aquí hay una vista previa de la misma:

Pasos para crear un widget dinámico

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.

Paso 2: agregue el widget de la aplicación al proyecto

  • Haga clic derecho en la aplicación , mueva el cursor a nuevo , busque la opción » Widget » al final, selecciónela.

widget screenshot

  • Especifique las propiedades requeridas para el widget, como min.width y height , archivo de configuración e idioma preferido, etc., y continúe. Los archivos se generan automáticamente.

widget screenshot

Paso 3: ¿Qué programar? ¿Dónde programar?

  1. En nuestra aplicación, dado que deseamos mostrar dos mensajes » Solo hazlo » y » Eres increíble » (los usuarios pueden elegir sus propios mensajes) uno tras otro simultáneamente, estaríamos implementando un hilo para generar una pausa (de 1 segundo) en el medio.
  2. Toda la programación (back-end) se realiza en el recién creado NewAppWidget.kt , Kotlin Class File en la carpeta de origen principal.

Cambios hechos solo aArchivo NewAppWidget.kt

NewAppWidget.kt

package org.geeksforgeeks.widget_dynamic
  
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
import android.content.Intent
import android.widget.RemoteViews
  
// Implementation of App Widget functionality
class NewAppWidget : AppWidgetProvider() {
    override fun onUpdate(
        context: Context,
        appWidgetManager: AppWidgetManager,
        appWidgetIds: IntArray
    ) {
        // There may be multiple widgets active, so update all of them
        for (appWidgetId in appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId)
        }
    }
  
    // Enter relevant functionality for 
      // when the first widget is created
    override fun onEnabled(context: Context) {
          
    }
  
    // Enter relevant functionality for
    // when the last widget is disabled
    override fun onDisabled(context: Context) {
          
    }
}
  
  
internal fun updateAppWidget(
    context: Context,
    appWidgetManager: AppWidgetManager,
    appWidgetId: Int
) 
/////////////////////////Add functionality here ///////////////////////////////
{
    Thread(Runnable {
        while(true){
                // Construct the RemoteViews object
                val views = RemoteViews(context.packageName, R.layout.new_app_widget)
                views.setTextViewText(R.id.appwidget_text, "Just do it")
                // Instruct the widget manager to update the widget
                appWidgetManager.updateAppWidget(appWidgetId, views)
                Thread.sleep(1000)
                  
                // Construct the RemoteViews object
                views.setTextViewText(R.id.appwidget_text, "You are awesome")
                // Instruct the widget manager to update the widget
                appWidgetManager.updateAppWidget(appWidgetId, views)
                Thread.sleep(1000)
        }
    }).start()
}
////////////////////////////////////////////////////////////////////////////////////

Eso es todo, ejecute el código y verá este widget en la lista de widgets, llévelo a la pantalla de inicio.

Salida: ejecutar en el emulador

Publicación traducida automáticamente

Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *