Recherche…


Remarques

SDv

Déclaration Manifeste -

Déclarez la classe AppWidgetProvider dans le fichier AndroidManifest.xml votre application. Par exemple:

<receiver android:name="ExampleAppWidgetProvider" >
<intent-filter>
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
           android:resource="@xml/example_appwidget_info" />
</receiver>

Métadonnées

Ajoutez les métadonnées AppWidgetProviderInfo dans res/xml :

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="40dp"
    android:minHeight="40dp"
    android:updatePeriodMillis="86400000"
    android:previewImage="@drawable/preview"
    android:initialLayout="@layout/example_appwidget"
    android:configure="com.example.android.ExampleAppWidgetConfigure"
    android:resizeMode="horizontal|vertical"
    android:widgetCategory="home_screen">
</appwidget-provider>

Classe AppWidgetProvider

Le rappel AppWidgetProvider plus important est onUpdate() . Il est appelé à chaque fois qu'un appwidget est ajouté.

public class ExampleAppWidgetProvider extends AppWidgetProvider {

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        final int N = appWidgetIds.length;

        // Perform this loop procedure for each App Widget that belongs to this provider
        for (int i=0; i<N; i++) {
            int appWidgetId = appWidgetIds[i];

            // Create an Intent to launch ExampleActivity
            Intent intent = new Intent(context, ExampleActivity.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

            // Get the layout for the App Widget and attach an on-click listener
            // to the button
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout);
            views.setOnClickPendingIntent(R.id.button, pendingIntent);

            // Tell the AppWidgetManager to perform an update on the current app widget
            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
    }
}

onAppWidgetOptionsChanged() est appelée lorsque le widget est placé ou redimensionné.

onDeleted(Context, int[]) est appelé lorsque le widget est supprimé.

Deux widgets avec une déclaration de mise en page différente

  1. Déclarez deux récepteurs dans un fichier manifeste:
<receiver
    android:name=".UVMateWidget"
    android:label="UVMate Widget 1x1">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    </intent-filter>

    <meta-data
        android:name="android.appwidget.provider"
        android:resource="@xml/widget_1x1" />
</receiver>
<receiver
    android:name=".UVMateWidget2x2"
    android:label="UVMate Widget 2x2">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    </intent-filter>

    <meta-data
        android:name="android.appwidget.provider"
        android:resource="@xml/widget_2x2" />
</receiver>
  1. Créer deux mises en page
    • @xml/widget_1x1
    • @xml/widget_2x2
  2. Déclarez la sous-classe UVMateWidget2x2 de la classe UVMateWidget avec un comportement étendu:
package au.com.aershov.uvmate;

import android.content.Context;
import android.widget.RemoteViews;

public class UVMateWidget2x2 extends UVMateWidget {

    public RemoteViews getRemoteViews(Context context, int minWidth,
                                      int minHeight) {

        mUVMateHelper.saveWidgetSize(mContext.getString(R.string.app_ws_2x2));
        return new RemoteViews(context.getPackageName(), R.layout.widget_2x2);
    }
}

Créer / intégrer un widget de base en utilisant Android Studio

Dernier Android Studio va créer et intégrer un widget de base à votre application en 2 étapes.

Droit sur votre application ==> Nouveau ==> Widget ==> Widget App

.

entrer la description de l'image ici

Il affichera un écran comme ci-dessous et remplira les champs

entrer la description de l'image ici

C'est fait.

Il va créer et intégrer un widget HelloWorld de base (y compris un fichier de mise en page, un fichier de métadonnées, une déclaration dans un fichier manifeste, etc.) à votre application.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow