[android]Timer、TimerTask処理を使って画面の描画処理[java]
画面の描画などで、時間の経過によって画面を変化させたいときにはjava.util.Timerが使えます。
TimerTaskクラスをTimerスケジュールに設定することで定期的に処理を実行することができます。
MainActivity.java
package com.example.test; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; public class MainActivity extends Activity { Handler m_handler = null; TextView m_timerCount = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); m_handler = new Handler(); setContentView(R.layout.activity_main); m_timerCount = (TextView) findViewById(R.id.timerCount); Timer timer = new Timer(); TimerTask timerTask = new myTimerTask(); timer.schedule(timerTask, 0); // 即座にタイマー処理を実行する } class myTimerTask extends TimerTask { int timerCnt = 0; @Override public void run() { while (true) { timerCnt++; // Viewの操作には更に別スレッドで実行させる m_handler.post(new Runnable() { @Override public void run() { m_timerCount.setText(String.valueOf(timerCnt)); // TextViewにカウントの表示 } }); } } } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <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" > <TextView android:id="@+id/timerCount" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>