我想制作一个具有四个按钮(开始,停止1,停止2,结束)和显示指示器的原型。 按下开始时,应用程序应该启动,并且3秒后指示器应开始以5秒的间隔差随机显示颜色(红色和蓝色)。 每当出现这些颜色中的任何一种时,计时器也应从零开始。 我需要这些颜色随机更改10次。 时间应该在按stop1或stop2时停止。 我需要颜色显示和按下停止按钮(1或2)之间的时间差。 时差应保存在.txt文件中。 我已经编写了此代码,但是无法根据我的要求使指示器和计时器正常工作。 在这方面请帮助我。
公共类MainActivity扩展了AppCompatActivity {//最终字符串sdpath = Environment.getExternalStorageDirectory()。getAbsolutePath(); TextView计时器,timer1; EditText Participant_No; 参加者 按钮开始,停止1,停止2,结束,闪烁; long MillisecondTime,StartTime,TimeBuff,UpdateTime = 0L; 处理程序处理程序; int Seconds,分钟,MilliSeconds; 字符串s; FileOutputStream fos = null;
public Runnable runnable = new Runnable() {
public void run() {
MillisecondTime = SystemClock.uptimeMillis() - StartTime;
UpdateTime = TimeBuff + MillisecondTime;
Seconds = (int) (UpdateTime / 1000);
Minutes = Seconds / 60;
Seconds = Seconds % 60;
MilliSeconds = (int) (UpdateTime % 1000);
timer.setText("" + Minutes + ":"
+ String.format("%02d", Seconds) + ":"
+ String.format("%03d", MilliSeconds));
handler.postDelayed(this, 0);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
handler = new Handler();
start = (Button) findViewById(R.id.button);
stop1 = (Button) findViewById(R.id.button2);
stop2 = (Button) findViewById(R.id.button3);
end = (Button) findViewById(R.id.button4);
timer = (TextView) findViewById(R.id.textView);
timer1 = (TextView) findViewById(R.id.textView2);
Participant_No = (EditText) findViewById(R.id.editText);
blink = (Button) findViewById(R.id.button5);
stop1.setEnabled(false);
stop2.setEnabled(false);
end.setEnabled(true);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
s = "";
StartTime = SystemClock.uptimeMillis();
handler.postDelayed(runnable, 0);
stop1.setEnabled(true);
stop2.setEnabled(true);
blinktxt();
}
});
stop1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
s = s + "1," + timer.getText().toString() + "\n";
timer1.setText(timer.getText().toString());
start.setEnabled(true);
stop1.setEnabled(true);
stop2.setEnabled(true);
}
});
stop2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
s = s + "2," + timer.getText().toString() + "\n";
timer1.setText(timer.getText().toString());
start.setEnabled(true);
stop1.setEnabled(true);
stop2.setEnabled(true);
}
});
end.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
savefile();
}
});
}
public void savefile()
{
try {
participant = Integer.valueOf(Participant_No.getText().toString());
ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, 23);
File folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File myfile = new File(folder, "CRT" + participant + ".txt");
fos = new FileOutputStream(myfile, true);
fos.write(s.getBytes());
fos.close();
Toast.makeText(getApplicationContext(), "the file is saved in " + myfile.getAbsolutePath(), Toast.LENGTH_LONG).show();
} catch(FileNotFoundException e){
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}
}
@SuppressLint("WrongConstant")
public void blinktxt(){
ObjectAnimator animator = ObjectAnimator.ofInt(blink, "backgroundColor", Color.WHITE,Color.BLUE,Color.WHITE,Color.RED);
animator.setDuration(600);
animator.setEvaluator(new ArgbEvaluator());
animator.setRepeatMode(Animation.REVERSE);
animator.setRepeatCount(10);
animator.start();
}
}`