Suche…


Bemerkungen

SDv

Manifesterklärung -

Deklarieren Sie die AppWidgetProvider Klasse in Ihrer Anwendung AndroidManifest.xml Datei. Zum Beispiel:

<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>

Metadaten

Fügen Sie die AppWidgetProviderInfo-Metadaten in 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>

AppWidgetProvider-Klasse

Der wichtigste AppWidgetProvider Callback ist onUpdate() . Es wird jedes Mal aufgerufen, wenn ein Appwidget hinzugefügt wird.

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() wird aufgerufen, wenn das Widget platziert oder seine Größe onAppWidgetOptionsChanged() wird.

onDeleted(Context, int[]) wird aufgerufen, wenn das Widget gelöscht wird.

Zwei Widgets mit unterschiedlichen Layouts

  1. Deklarieren Sie zwei Empfänger in einer Manifestdatei:
<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. Erstellen Sie zwei Layouts
    • @xml/widget_1x1
    • @xml/widget_2x2
  2. Deklarieren Sie die Unterklasse UVMateWidget2x2 aus der UVMateWidget Klasse mit erweitertem Verhalten:
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);
    }
}

Erstellen / Integrieren Sie Basic Widget mit Android Studio

Das neueste Android Studio erstellt und integriert ein Basic Widget in Ihre Anwendung in 2 Schritten.

Rechts in Ihrer Anwendung ==> Neu ==> Widget ==> App Widget

.

Geben Sie hier die Bildbeschreibung ein

Es wird ein Bildschirm wie unten angezeigt und die Felder werden ausgefüllt

Geben Sie hier die Bildbeschreibung ein

Es ist fertig.

Es erstellt und integriert ein einfaches HelloWorld-Widget (einschließlich Layoutdatei, Metadatendatei, Deklaration in Manifestdatei usw.) in Ihre Anwendung.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow