plusone

15. Mai 2012

Android Widget erstellen

Hallo zusammen,

in der letzten Zeit habe ich mich mit Widgets beschäftigt und nun möchte ich meine Erkenntnis mit euch teilen.

Für dieses Tutorial zur Erstellen eines Widgets sind Grundkenntnisse in der Android-App-Entwicklung vorausgesetzt.


Erstellt zuerst ein Projekt. Ich benutze minSDK:8.

Die Basisklasse beim Widget ist AppWidgetProvider. Erstellt eure Klasse und erbt vom AppWidgetProvider.

import android.appwidget.AppWidgetProvider;

public class BasisAppWidgetProvider extends AppWidgetProvider {

}
Der passende Manifesteintrag lautet:

<application... >
    <receiver android:name="de.alexroid.widgetsample.BasisAppWidgetProvider" >
        <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>
        <meta-data
            android:name="android.appwidget.provider"
            android:resource="@xml/widget_info" />
    </receiver>
</application>
Das Widget wird als Receiver im application-Tag eingetragen. Intent-Filter habe ich bei mir eingebaut, da sonst die APP nicht als Widget anerkannt worden ist.
Die Einstellungen für das Widget kann man in einer XML-Datei hinterlegen. In meinem Beispiel ist es die widget_resource.xml-Datei.
Legt die widget_resource.xml-Datei im xml-Ordner eures Projektes an. Solltet ihr keinen xml-Ordner haben, dann legt diesen mit an.

Diese dabei legt das Startlayout eures Widgets fest und unter anderem die update Periode.
Ich habe dazu auch die Größe angegeben. Das nimmt die Hälfte meines Bidlschirmes (Atrix) weg. Und das ist gleichzeitig die Hälfte(2x4) der empfohlene maximale Größe von 4x4 Zellen für die Mindesangabe. Größer darf es nicht sein, da es bei bestimmten Geräten nicht angezeigt werden kann!

widget_info.xml:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/widget_layout"
    android:minHeight="110dp"
    android:minWidth="250dp">

</appwidget-provider>
Faustformel für Breite/Höhe: 70 x [Anzahl] - 30dp

Hier ist der eine Eintrag vom anderen Abhängig. Jetzt kommen wir zum Layout. Widget unterstützen nur eine begrenzte Auswahl an Views.
Ich bevorzuge RelativLayout und für das Beispiel nehmen wir noch ein TextView.
Alle Unterstüzte Layouts finder ihr HIER.

widget_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Simple Widget"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>
Eine Klasse, die von AppWidgetProvider erbt, eine Configuration-XML-Datei und eine Layout-XML-Datei werden für ein einfaches Widget gebraucht. Ihr findet nur euer Widget unter der Auflistung alles anderen Widges (long click auf freie Fläche des Home-Screens und in der Liste Widgets auswählen - denglish ist unsere Sprache *g).


Nach dem Hinzufügen seht das Widget so aus(ich habe auf blauen Hintergrund gewechselt):


Wie ein Widget sieht es zwar noch nicht aus, aber die Grundlagen habt ihr nun gelernt :)

Mit freundlichen Grüßen
Alexander Fink

Keine Kommentare:

Kommentar veröffentlichen