HelloWorldに毛が生えたプログラムを書く

自分の日記ながら、4月というはるか昔にこんなことを書いてた

テキストを表示するフィールドと、ボタンを画面上に設けて、ボタンを押したら現在時間を表示するようにする。
なんで、自動で表示しないか?っていうと、タイマー処理の仕方がまだ分からんから。

さすがに調べたので、追記。

必要なモノ

C#でいうところの「TImerのコンポーネントのTIck()イベントを1秒ごとにおきるように設置する」みたいなことをするのかと思ったら、どうやら違った。android.os.Handlerのオブジェクトで◯◯ミリ秒後に実施、という設定をして(threadのqueueに追加して)おいて、その実施の部分をandroid.os.Runnable のrun()メソッドをoverrideする形で作る。

その辺については、なんのことはない、たまたまググって見つけた http://magpad.jugem.jp/?eid=108 のページの丸写しだ。

package com.example.clockexample;
 
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
 
public class Clock extends Activity {
	private final long CLOCK_INTERVAL = 1000;
	private TextView tv;
	private Handler handler = new Handler();
	private Runnable runnable;
 
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		tv = (TextView) findViewById(R.id.TextView01);
		runnable = new Runnable() {
			@Override
			public void run() {
				showTodayNow(tv);
				handler.postDelayed(this, CLOCK_INTERVAL);
			}
		};
		handler.postDelayed(runnable, CLOCK_INTERVAL);
	}
 
	private void showTodayNow(TextView _tv) {
		Calendar cal = Calendar.getInstance();
		_tv.setText(cal.getTime().toLocaleString());
	}
}

なるほど。次は、アナログクロックだな。canvasを用意して、paintで円とか線とか書けばいいはずだ。
ただ、線を書くときには、三角関数で座標をきちんと決めなアカンはずで、三角関数ってそもそもどうやって使うのかすっかり忘れてるな。