ウィジェットの作り方 (1/5)

~ ウィジェットの始まり ~

前へ   1  2  2  4  5   次へ
ウィジェットと言うのは、ホーム画面に常駐するアプリです。機能制限が多いですが、面白いアプリが作れます。まずは、分かりやすさ重視で、1番簡単なウィジェットを作りましょう。

1.androidウィジェットを作る

この講座では、簡単なウィジェットを作ります。ウィジェットは、最小限のものを作るにも、それなりに手間がかかります。大まかな手順は、次のようになります。

(1)プロジェクトを作ります。
(2)AppWidgetProviderを継承したクラスを作ります。
(3)その中のonUpdateメソッドにメインの命令を書きます。
(4)ウィジェットの設定ファイルを作ります。
(5)マニフェストを設定します。

さあ、それでは1つ1つ作って行きましょう。

2.プロジェクトを作る

これは、普通に作ればOKです。ただし、Activityは必要ありません。この講座では、

プロジェクト名SampleWidget01
ターゲットAndroid 1.5
アプリケーション名ウィジェット No.1
パッケージ名sample.android.widget01
Activityチェックなし
SDKバージョン3

ということにしておきます。何でもOKです。

3.AppWidgetProviderを継承したクラスを作る

ウィジェットは、AppWidgetProviderを継承して作ります。srcフォルダの中に、AppWidgetProviderを継承したクラスを新規作成します。普通のAndroidアプリでActivityを継承したクラスを作るのと同じ感覚です。Eclipseから作る場合、スーパークラスを「android.appwidget.AppWidgetProvider」にしておくと後の入力が少し楽です(ソースコードをコピペすると、あまり関係ありませんが・・・)。クラス名(=ファイル名)は、「SampleWidget01」としておきます。次のようなフォルダ構成になります。

[ SampleWidget01 ]
    [ src ]
        [ sample.android.widget01 ]
            SampleWidget01.java
    [ gen ]
    [ Android 1.5 ]
    [ assets ]
    [ res ]
    AndroidManifest.xml
    default.properties
    proguard.cfg

4.onUpdateメソッドのオーバーライド

AppWidgetProviderを継承したクラスは、その中のonUpdateメソッドを定期的に実行します。ので、これをオーバーライドして、この中に描画処理を書きます。

5.リモートビューを使う

ウィジェットでは、描画処理にViewやSerfaceViewは使えませんが、TextViewやImageViewは使えます。今回は、簡単な方で、TextViewを使います。TextViewは始めからlayout/main.xmlの中に用意されているので、これを使います。main.xmlをRemoteViewsにセットして、そのRemoteViewsをウィジェットにセットするれば、結果として、TextViewがウィジェットに表示されます。SampleWidget01.javaは以下のようになります。

SampleWidget01.java

package sample.android.widget01;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.widget.RemoteViews;

public class SampleWidget01 extends AppWidgetProvider {
    @Override
    public void onUpdate(Context c, AppWidgetManager awm, int[] awi) {
        //~ リモートビューにmain.xmlをセット ~//
        RemoteViews rv = new RemoteViews(c.getPackageName(), R.layout.main);
        //~ ウィジェットにremoteViewsをセット ~//
        ComponentName cn = new ComponentName(c, SampleWidget01.class);
        awm.updateAppWidget(cn, rv);
    }

}

注意:オリジナルのクラス名を使ったときは、青の部分も変更しないといけません。

6.つぎにやること

これで、メインのプログラムはできましたが、まだウィジェットの大きさや更新頻度が決まっていません。
次回はウィジェットの設定ファイルを作ります。

前へ   1  2  2  4  5   次へ