1 つのボタン スタートと 3 つの editText があります。スタートボタンを押すとタイマーがスタートし、ボタンテキストが Lap に変わり、時分秒が edittext1 に表示されます。Lap ボタンを押すと、editText1 の値が停止します。editText1 の 3 つの値はすべて、editText1 の停止位置で editText2 に表示されます。
ラップボタンのソースコードを教えてください。これまでのところ、次のコードがあります。
package com.example.timmerproject;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class LapActivity extends Activity
{
EditText ed1,ed2,ed3;
Button btntimer;
final Handler handler = new Handler();
long startTime=0;
Handler h2 = new Handler();
Runnable run = new Runnable()
{
@Override
public void run()
{
// TODO Auto-generated method stub
long millis = System.currentTimeMillis() - startTime;
int seconds = (int)(millis/1000);
int hours =seconds/3600;
int minutes = (seconds % 3600)/60;
seconds = seconds % 60;
ed1.setText(String.format("%02d:%02d:%02d", hours,minutes,seconds));
h2.postDelayed(this, 500);
}
};
class firstTask extends TimerTask
{
@Override
public void run()
{
handler.sendEmptyMessage(0);
}
};
class secondTask extends TimerTask
{
@Override
public void run()
{
// TODO Auto-generated method stub
LapActivity.this.runOnUiThread(new Runnable()
{
@Override
public void run()
{
// TODO Auto-generated method stub
long millis = System.currentTimeMillis() - startTime;
int seconds = (int)(millis/1000);
int hours =seconds/3600;
int minutes = (seconds % 3600)/60;
seconds = seconds % 60;
ed2.setText(String.format("%02d:%02d:%02d", hours,minutes,seconds));
}
});
}
}
class thirdTask extends TimerTask
{
@Override
public void run()
{
// TODO Auto-generated method stub
LapActivity.this.runOnUiThread(new Runnable()
{
@Override
public void run()
{
// TODO Auto-generated method stub
long millis = System.currentTimeMillis() - startTime;
int seconds = (int)(millis/1000);
int hours =seconds/3600;
int minutes = (seconds % 3600)/60;
seconds = seconds % 60;
ed3.setText(String.format("%02d:%02d:%02d", hours,minutes,seconds));
}
});
}
}
Timer timer = new Timer();
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.lap);
ed1 = (EditText)findViewById(R.id.ed11);
ed2 = (EditText)findViewById(R.id.ed12);
ed3 = (EditText)findViewById(R.id.ed13);
btntimer = (Button)findViewById(R.id.lapbutton);
btntimer.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
Button btn = (Button)v;
if(btn.getText().equals("Stop"))
{
timer.cancel();
timer.purge();
h2.removeCallbacks(run);
btn.setText("Start");
}
else
{
startTime = System.currentTimeMillis();
timer = new Timer();
timer.schedule(new firstTask(), 0,500);
timer.schedule(new secondTask(), 0,500);
timer.schedule(new thirdTask(), 0,500);
h2.postDelayed(run, 0);
btn.setText("Stop");
}
}
});
}
}