requisitos previos
- ¿Cómo crear un widget básico de una aplicación de Android?
- ¿Cómo crear un widget dinámico de una aplicación de Android?
Un widget es una versión mini de una aplicación, que proporciona una base para que el usuario navegue por ella o use sus funciones desde la pantalla de inicio o la pantalla de bloqueo. Los widgets contienen elementos de acuerdo con las funciones que proporciona. Los widgets, como se denominó anteriormente una versión mini de la aplicación, son capaces de mostrar elementos similares a los de una aplicación. A través de este artículo, demostraremos la implementación de los botones y, en consecuencia, cómo se pueden usar para ciertas funcionalidades. Aquí hay una vista previa de la misma:
Pasos para crear botones dentro de un widget
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.
- 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.
Paso 3: ¿Qué programar? ¿Dónde programar?
- En nuestra aplicación, dado que deseamos mostrar dos botones llamados » Actividad1 » y » Actividad2 «, debemos declararlos dentro del archivo new_app_widget.xml que se encuentra dentro de los Diseños en la carpeta Recursos.
- Toda la programación (back-end) se realiza en el recién creado NewAppWidget.kt, Kotlin Class File en la carpeta de origen principal. Aquí, construimos los Botones . Dado que estos botones redirigirán a los usuarios a diferentes actividades, necesitamos crear dos actividades vacías, las llamamos » Actividad1 » y » Actividad2 » respectivamente.
- Estas actividades sirven como intentos pendientes, ya que se inicializan solo cuando el usuario hace clic en uno de los botones.
- Se realizan cambios en los archivos front-end de la Actividad 1 y la Actividad 2 para representar sus nombres.
- Simplemente consulte los códigos a continuación y los comentarios correspondientes que se dan a continuación.
- Archivos new_app_widget.xml y NewAppWidget.kt
XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#0F9D58" android:padding="@dimen/widget_margin"> <!-- Button 1 --> <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Activity1" android:layout_centerInParent="true" /> <!-- Button 2 --> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Activity2" android:layout_centerHorizontal="true" android:layout_below="@id/btn1" /> </RelativeLayout>
Kotlin
package org.geeksforgeeks.widget_buttons import android.app.PendingIntent 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 ) /////////////////////////////Start Coding Here/////////////////////////////////////// { // Create a pending Intent for Activity 1 val i1 : PendingIntent = Intent(context,Activity1::class.java).let { intent -> PendingIntent.getActivity(context, 0, intent, 0) } // Create a pending Intent for Activity 2 val i2 : PendingIntent = Intent(context,Activity2::class.java).let { intent -> PendingIntent.getActivity(context, 0, intent, 0) } // Construct the RemoteViews object val views = RemoteViews(context.packageName, R.layout.new_app_widget) // Button 1 onClick Function .apply{setOnClickPendingIntent(R.id.btn1,i1)} // Button 2 onClick Function .apply { setOnClickPendingIntent(R.id.btn2,i2) } // Instruct the widget manager to update the widget appWidgetManager.updateAppWidget(appWidgetId, views) } /////////////////////////////Code Ends Here///////////////////////////////////////
- Archivos activity_1.xml, Activity1.kt, activity_2.xml, Activity2.kt
En ambos, los archivos XML agregan solo un TextView , y en los archivos Kotlin, no agregamos nada. Los usuarios pueden escribir su propio código según sus requisitos dentro de esos archivos.
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Activity1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Activity 1" android:layout_centerInParent="true" /> </RelativeLayout>
Kotlin
package org.geeksforgeeks.widget_buttons import androidx.appcompat.app.AppCompatActivity import android.os.Bundle class Activity1 : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_1) } }
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Activity2"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Activity 2" android:layout_centerInParent="true" /> </RelativeLayout>
Kotlin
package org.geeksforgeeks.widget_buttons import androidx.appcompat.app.AppCompatActivity import android.os.Bundle class Activity2 : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_2) } }
- Archivos activity_main.xml, MainActivity.kt
No hay nada que hacer dentro de los archivos activity_main.xml, MainActivity.kt. Los usuarios pueden escribir su propio código según sus requisitos dentro de esos archivos.
XML
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
Kotlin
package org.geeksforgeeks.widget_buttons import androidx.appcompat.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } }
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