Ricerca…


Osservazioni

SDV

Dichiarazione manifesta -

Dichiarare la classe AppWidgetProvider nel file AndroidManifest.xml dell'applicazione. Per esempio:

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

Metadati

Aggiungi i metadati AppWidgetProviderInfo 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>

Classe AppWidgetProvider

Il callback AppWidgetProvider più importante è onUpdate() . Viene chiamato ogni volta che viene aggiunto un appwidget.

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() viene chiamato quando il widget viene posizionato o ridimensionato.

onDeleted(Context, int[]) viene chiamato quando il widget viene cancellato.

Due widget con diversa dichiarazione di layout

  1. Dichiarare due ricevitori in un file manifest:
<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. Crea due layout
    • @xml/widget_1x1
    • @xml/widget_2x2
  2. Dichiarare la sottoclasse UVMateWidget2x2 dalla classe UVMateWidget con un comportamento esteso:
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);
    }
}

Crea / integri il widget di base con Android Studio

L'ultima versione di Android Studio creerà e integrerà un widget di base per la tua applicazione in 2 passaggi.

Proprio sulla tua applicazione ==> Nuovo ==> Widget ==> Widget app

.

inserisci la descrizione dell'immagine qui

Mostrerà una schermata come sotto e riempirà i campi

inserisci la descrizione dell'immagine qui

E 'fatto.

Creerà e integrerà un widget HelloWorld di base (tra cui file di layout, file di metadati, dichiarazione nel file manifest ecc.) Alla tua applicazione.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow