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

~ ウィジェットをちょっと改造 ~

前へ   1  2  3  4  5   次へ
前回で、Hello World! と表示するだけのウィジェットは完成しました。でも、これだけでは応用の幅も狭いので、今回をこれをちょっと改造したいと思います。

13.もっとも簡単なウィジェットを少し改造する

30分ごとに、表示される文字が変化するようにしてみます。このためには、次の作業が必要です。

(1)TextViewに名前を付ける。
(2)プログラムからTextViewにテキストを書く。
(3)そのテキストを更新ごとに変更する。

14.TextViewに名前を付ける

プログラムからTextViewを操作するためには、TextViewに名前(id)が必要です。

android:id="@+id/名前"

で、名前を付けることができます。ここでは、名前はtextViewとしておきます。main.xmlは次のようになります。

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<TextView  
	android:id="@+id/textView"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:text="@string/hello"
	/>
</LinearLayout>

15.プログラムからTextViewにテキストを書く

先ほどのmain.xmlの

android:text="@string/hello"

の部分を

android:text="ウィジェット最高!"

とかすると、表示される文字を変更できます。でも、これでは、更新ごとに文字を変更できないので、プログラムから文字を表示してみます。

remoteViews.setTextViewText(R.id.textView, "ウィジェット最高!");

とすると、RemoteViewsを通してTextViewのTextを変更できます。sampleWidget.javaは次のようになります。

sampleWidget.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) {
		
		RemoteViews rv = new RemoteViews(c.getPackageName(), R.layout.main);
		rv.setTextViewText(R.id.textView, "ウィジェット最高!");
		
		ComponentName cn = new ComponentName(c, SampleWidget01.class);
		awm.updateAppWidget(cn, rv);
	}
}

これで、コードから文字を表示できました。あとは、30分ごとにウィジェットが更新されるようにして、更新の度の文字を変えるだけです。

前へ   1  2  3  4  5   次へ