Cómo construir un Widget Android Simple
Así que tengo un poco de experiencia en la construcción de aplicaciones para Android. Pero ahora me gustaría construir un widget para Android que se sentaría en la pantalla de inicio y mostrar un botón, y cuando se presiona el botón se reproduce un sonido. He estado buscando tutoriales en línea sobre cómo configurar un widget de Android, pero no puedo parecer que lo averiguar. ¿Hay algunos buenos tutoriales por ahí sobre cómo hacer un widget independiente este simple o en algún lugar que pueda empezar? Gracias de antemano, Peter
- Android: agrega AppWidgets a una actividad
- Widget del visor de PDF en Android
- Buscando el código fuente de los nuevos Widgets del selector de tiempo y fecha de Google Calendar
- Cómo llamar a onUpdate () en AppWidgetProvider?
- EditText Alternativas en un Widget? Tiene que haber una forma
- Android ICS widgets - listviews se queda en blanco al azar (cuando el lanzador se reinicia?) RemoteviesService error?
- ¿Cómo se ejecuta una actividad desde un botón de un widget en Android?
- Actualización de Android Widget
- Widget del reproductor de música de Android
- Notificación de Android después de que la aplicación está instalada en el dispositivo - ¿Cómo?
- No se puede enviar la intención pendiente del widget, SendIntentException
- AsyncTask para actualizar widget - cómo acceder a textviews en onPostExecute ()?
- Widget para encender / apagar la linterna de la cámara en android
Primero Crea un nuevo archivo de diseño dentro de res / layout, debajo de la estructura del proyecto, que definirá el diseño del widget (widgetlayout.xml) de acuerdo con la siguiente estructura.
<TextView android:text="@string/widgettext" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.8" android:layout_gravity="center_vertical" android:textColor="#000000"></TextView> <TextView android:text="@string/widgetmoodtext" android:id="@+id/widgetMood" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.3" android:layout_gravity="center_vertical" android:textColor="#000000"></TextView> <ImageButton android:id="@+id/widgetBtn" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.5" android:src="@drawable/smile_icon" android:layout_gravity="center_vertical"> </ImageButton>
Cree la carpeta res / xml bajo la estructura del proyecto Cree un archivo xml (widgetproviderinfo.xml) con los siguientes parámetros:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="220dp" android:minHeight="72dp" android:updatePeriodMillis="86400000" android:initialLayout="@layout/widgetlayout"> </appwidget-provider>
Ahora debe crear el servicio que reacciona a la interacción del usuario con el botón de imagen sonriente (CurrentMoodService.java).
@Override public int onStartCommand(Intent intent, int flags, int startId) { super.onStart(intent, startId); updateMood(intent); stopSelf(startId); return START_STICKY; } private void updateMood(Intent intent) { if (intent != null){ String requestedAction = intent.getAction(); if (requestedAction != null && requestedAction.equals(UPDATEMOOD)){ this.currentMood = getRandomMood(); int widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, 0); AppWidgetManager appWidgetMan = AppWidgetManager.getInstance(this); RemoteViews views = new RemoteViews(this.getPackageName(),R.layout.widgetlayout); views.setTextViewText(R.id.widgetMood, currentMood); appWidgetMan.updateAppWidget(widgetId, views); } } }
Después de definir el servicio, es hora de implementar la clase de proveedor de widgets (CurrentMoodWidgetProvider.java).
@Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { super.onUpdate(context, appWidgetManager, appWidgetIds); for (int i=0; i<appWidgetIds.length; i++) { int appWidgetId = appWidgetIds[i]; RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widgetlayout); Intent intent = new Intent(context, CurrentMoodService.class); intent.setAction(CurrentMoodService.UPDATEMOOD); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); views.setOnClickPendingIntent(R.id.widgetBtn, pendingIntent); appWidgetManager.updateAppWidget(appWidgetId, views); } }
Finalmente, es necesario declarar el Servicio y el Proveedor de Widget de la Aplicación en el Manifiesto (AndroidManifest.xml).
<service android:name=".CurrentMoodService"> </service> <receiver android:name=".CurrentMoodWidgetProvider"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetproviderinfo" /> </receiver>
Y si desea descargar todo el código fuente, eche un vistazo a la url a continuación …
http://sites.google.com/site/androidsourcecode/src/CurrentMoodWidgetProject.rar?attredirects=0
- Activo de fuente no encontrado helvetica.ttf en lollipop
- ¿Hay un cargador de nueve parches para el iPhone?