Java 24小时倒计时计时器,具有三个独立的文本视图,分别为小时、分钟、秒
我正在尝试实现一个24小时倒计时计时器,其中包含三个独立的文本视图,一个保存小时,一个保存分钟,一个保存秒 按下开始时间按钮时,我希望计时器倒计时 我在这方面做了很多研究,并尝试实施许多示例,从文档中学习并根据自己的喜好修改它,但我无法生成一个解决方案 问题是,对于android中的倒计时计时器,通常只使用一个文本视图来实现,该文本视图被视为一个带有时间的长字符串,然后从那里开始倒计时。因为我有三个独立的文本视图,所以我不确定如何接近我的24小时倒计时 我很惊讶我找不到很多关于这个问题的信息 即 例如,这里我有一个倒计时,但这只是使用一个文本视图。我将如何制作一些考虑到我的三个单独的文本视图(小时、分钟和秒)的内容,并相应地计数Java 24小时倒计时计时器,具有三个独立的文本视图,分别为小时、分钟、秒,java,android,timer,Java,Android,Timer,我正在尝试实现一个24小时倒计时计时器,其中包含三个独立的文本视图,一个保存小时,一个保存分钟,一个保存秒 按下开始时间按钮时,我希望计时器倒计时 我在这方面做了很多研究,并尝试实施许多示例,从文档中学习并根据自己的喜好修改它,但我无法生成一个解决方案 问题是,对于android中的倒计时计时器,通常只使用一个文本视图来实现,该文本视图被视为一个带有时间的长字符串,然后从那里开始倒计时。因为我有三个独立的文本视图,所以我不确定如何接近我的24小时倒计时 我很惊讶我找不到很多关于这个问题的信
Button buttonStartTime; // clicking this button will start time count down
TextView textViewShowTime; // will show the time
CountDownTimer countDownTimer; // built in android class CountDownTimer
long totalTimeCountInMilliseconds; // total count down time in milliseconds
long timeBlinkInMilliseconds; // start time of start blinking
boolean blink; // controls the blinking .. on and off
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getReferenceOfViews (); // get all views
setActionListeners (); // set action listerns
totalTimeCountInMilliseconds = 60 * 1000; // time count for 3 minutes = 180 seconds
timeBlinkInMilliseconds = 30 * 1000; // blink starts at 1 minutes = 60 seconds
}
private void setActionListeners() {
buttonStartTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textViewShowTime.setTextAppearance(getApplicationContext(), R.style.normalText);
countDownTimer = new CountDownTimer(totalTimeCountInMilliseconds, 500) {
// 500 means, onTick function will be called at every 500 milliseconds
@Override
public void onTick(long leftTimeInMilliseconds) {
long seconds = leftTimeInMilliseconds / 1000;
if ( leftTimeInMilliseconds < timeBlinkInMilliseconds ) {
textViewShowTime.setTextAppearance(getApplicationContext(), R.style.blinkText);
// change the style of the textview .. giving a red alert style
if ( blink ) {
textViewShowTime.setVisibility(View.VISIBLE);
// if blink is true, textview will be visible
} else {
textViewShowTime.setVisibility(View.INVISIBLE);
}
blink = !blink; // toggle the value of blink
}
textViewShowTime.setText(String.format("%02d", seconds / 60) + ":" + String.format("%02d", seconds % 60));
// format the textview to show the easily readable format
}
@Override
public void onFinish() {
// this function will be called when the timecount is finished
textViewShowTime.setText("Time up!");
textViewShowTime.setVisibility(View.VISIBLE);
}
}.start();
}
});
}
private void getReferenceOfViews() {
buttonStartTime = (Button) findViewById(R.id.btnStartTime);
textViewShowTime = (TextView) findViewById(R.id.tvTimeCount);
}
}
按钮启动时间;//单击此按钮将开始倒计时
TextView textViewShowTime;//将显示时间
倒计时倒计时;//内置安卓类倒计时器
长TotalTimeCountin毫秒;//总倒计时时间(毫秒)
长时间闪烁毫秒;//开始闪烁的开始时间
布尔闪烁;//控制闪烁。。断断续续
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GetReferenceOfView();//获取所有视图
setActionListeners();//设置操作侦听器
TotalTimeCountInMillistics=60*1000;//3分钟的时间计数=180秒
timeblinkinmillizes=30*1000;//闪烁从1分钟=60秒开始
}
私有void setActionListeners(){
buttonStartTime.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
textViewShowTime.setTextAppearance(getApplicationContext(),R.style.normalText);
countDownTimer=新的countDownTimer(TotalTimeCountin毫秒,500){
//500表示每500毫秒调用一次onTick函数
@凌驾
公共void onTick(长LeftTimein毫秒){
长秒=LeftTimein毫秒/1000;
if(LeftTimeinMillions
编辑:现在我有这个:
private void setActionListeners() {
start_timer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// textViewShowTime.setTextAppearance(getApplicationContext(), R.style.normalText);
countDownTimer = new CountDownTimer(totalTimeCountInMilliseconds, 500) {
// 500 means, onTick function will be called at every 500 milliseconds
@Override
public void onTick(long leftTimeInMilliseconds) {
int seconds = leftTimeInMilliseconds / 1000 % 60;
int minutes = leftTimeInMilliseconds / 60000 % 60;
int hours = leftTimeInMilliseconds / 3600000;
if ( leftTimeInMilliseconds < timeBlinkInMilliseconds ) {
// textViewShowTime.setTextAppearance(getApplicationContext(), R.style.blinkText);
// change the style of the textview .. giving a red alert style
if ( blink ) {
number_text.setVisibility(View.VISIBLE);
minute_text.setVisibility(View.VISIBLE);
second_text.setVisibility(View.VISIBLE);
// if blink is true, textview will be visible
} else {
number_text.setVisibility(View.INVISIBLE);
minute_text.setVisibility(View.INVISIBLE);
second_text.setVisibility(View.INVISIBLE);
}
blink = !blink; // toggle the value of blink
}
number_text = String.format("%02d", seconds % 60);
minute_text = String.format("%02d", seconds / 60);
second_text = String.format("%02d", seconds / 3600); // format the textview to show the easily readable format
}
@Override
public void onFinish() {
// this function will be called when the timecount is finished
//textViewShowTime.setText("Time up!");
//textViewShowTime.setVisibility(View.VISIBLE);
}
}.start();
}
});
}
private void getReferenceOfViews() {
start_timer = (Button) findViewById(R.id.start_button);
number_text = (TextView) findViewById(R.id.hour_progress_number);
minute_text = (TextView) findViewById(R.id.minute_progress_number);
second_text = (TextView) findViewById(R.id.second_progress_number);
}
private void setActionListeners(){
start\u timer.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//textViewShowTime.setTextAppearance(getApplicationContext(),R.style.normalText);
countDownTimer=新的countDownTimer(TotalTimeCountin毫秒,500){
//500表示每500毫秒调用一次onTick函数
@凌驾
公共void onTick(长LeftTimein毫秒){
int seconds=leftTimein毫秒/1000%60;
int minutes=LeftTimein毫秒/60000%60;
整数小时=LeftTimein毫秒/3600000;
if(LeftTimeinMillionstextViewShowTime.setText(String.format("%02d", seconds / 60) + ":" + String.format("%02d", seconds % 60));
textViewSeconds.setText(String.format("%02d", seconds % 60));
textViewMinutes.setText(String.format("%02d", seconds / 60));
textViewHours.setText(String.format("%02d", seconds / 3600));
int secs = leftTimeInMilliseconds / 1000 % 60;
int mins = leftTimeInMilliseconds / 60000 % 60;
int hours = leftTimeInMilliseconds / 3600000;
long startTime = System.currentTimeMillis();
//adding 24 hours milliseconds with current time of milliseconds to make it 24 hours milliseconds.
milliseconds = System.currentTimeMillis() + 86400000; // 24 hours = 86400000 milliseconds
CountDownTimer cdt = new CountDownTimer(milliseconds,1000) {
@Override
public void onTick(long millisUntilFinished) {
startTime =startTime -1;
Long serverUptimeSeconds =
(millisUntilFinished - startTime ) / 1000;
// now you repalce txtViewHours, txtViewMinutes, txtViewSeconds by your textView.
String hoursLeft = String.format("%d", (serverUptimeSeconds % 86400) / 3600);
txtViewHours.setText(hoursLeft);
Log.d("hoursLeft",hoursLeft);
String minutesLeft = String.format("%d", ((serverUptimeSeconds % 86400) % 3600) / 60);
txtViewMinutes.setText(minutesLeft);
Log.d("minutesLeft",minutesLeft);
String secondsLeft = String.format("%d", ((serverUptimeSeconds % 86400) % 3600) % 60);
txtViewSecond.setText(secondsLeft);
Log.d("secondsLeft",secondsLeft);
}
@Override
public void onFinish() {
Log.i(TAG, "Timer finished");
}
};
cdt.start();