いろいろガンガンいこうぜ。体も大事に

普段はJavaでAndroidアプリ開発しているプログラマーのブログです。

Hello Widget! (1) 最小構成のWidget

Widget


Androidを持ち始めてそろそろ1年と半年だけど,
正直しっかりとWidgetを使い始めたのは最近。


作ってみた経験が無かったので,
とりあえずHello WorldWidgetを作ってみようと思います。


Hello worldプログラムはHello Worldって表示するだけで,何もしない。
だから今回つくるWidgetもとりあえず,
ホーム画面に置けて,Hello Widget Worldって書いてある。
それだけの最小公正なWidgetを作ってみたいと思います。


Eclipseで,普通のアプリケーションを作るようにプロジェクトを作成
パッケージ名:com.rmstar.hellowidget
プロジェクト名:HelloWidget




まずは,Widgetのレイアウトを定義。

res/hello_widget_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FF777777" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_margin="10dip"
        android:background="#FFFFFFFF"
        android:gravity="center"
        android:text="@string/hello_world"
        android:textColor="#FF000000"
        android:textSize="12sp" />
</RelativeLayout>




widgetのホーム画面上でのサイズ,更新間隔,レイアウト指定をするファイルを作成。
res/xml/hello_widget.xml

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/hello_widget_layout"
    android:minHeight="72dip"
    android:minWidth="72dip"
    android:updatePeriodMillis="0" >

</appwidget-provider>


マニフェストファイルを編集。
Activityなし。
AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.rmstar.hellowidget"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <receiver
            android:name=".HelloWidgetProvider"
            android:label="@string/widget_name" >
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/hello_widget" />
        </receiver>
    </application>

</manifest>




やっと,Javaの編集。
だけど空っぽ。

src/com/rmstar/hellowidget/HelloWidgetProvider

package com.rmstar.hellowidget;

import android.appwidget.AppWidgetProvider;

public class HelloWidgetProvider extends AppWidgetProvider{

}


これと各種サイズのアイコンic_launchar.pngと,
文字列定義ファイルstrings.xmlを書き換えて,不要な物は消しました。


res/values/strings.xml

<resources>

    <string name="app_name">HelloWidget</string>
    <string name="hello_world">Hello\nwidget\nworld!</string>
    <string name="widget_name">HelloWidget</string>

</resources>


実機につなげて,Eclipseで実行するも応答なし。




えっ?
出てこない。





そりゃそうでした。
Widgetなんで。
Widget選択画面で普通にありました。
HelloWidgetが。


うっかり。




とりあえず,最小構成
HelloWorldがでるだけのWidgetはできました。




それではまた会えることを祈りつつ。