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で円とか線とか書けばいいはずだ。
ただ、線を書くときには、三角関数で座標をきちんと決めなアカンはずで、三角関数ってそもそもどうやって使うのかすっかり忘れてるな。