转载时请记得标明源地址:https://my.oschina.net/lijindou/blog/798710
本人博客地址: http://my.oschina.net/lijindou/blog
这篇博客主要是用Chronometer 实现了倒计时,如果又不想用这种方式实现的,我的另一篇博客中也有倒计时实现:
https://my.oschina.net/lijindou/blog/714657
大家可以打开这个连接看看
在这篇博客中的倒计时很简单的,源码已经贴出来了,大家可看看就明白了,然后在下面有两个方法,
1.将时分秒转为秒数
2.将秒数转为时分秒
大家也看看吧!
源码地址:http://download.csdn.net/detail/qq_33144317/9699730
MainActivity.java
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = "MainActivity";
private Chronometer timer;
private Chronometer timer1;
private Button but;
private Button but1;
private Button but2;
private Button but3;
private TextView tv0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
initData();
addEvent();
}
private void initViews() {
timer = (Chronometer) findViewById(R.id.timer);
timer1 = (Chronometer) findViewById(R.id.timer1);
but = (Button) findViewById(R.id.but);
but1 = (Button) findViewById(R.id.but1);
but2 = (Button) findViewById(R.id.but2);
but3 = (Button) findViewById(R.id.but3);
tv0 = (TextView) findViewById(R.id.tv0);
}
private void initData() {
}
private void addEvent() {
but.setOnClickListener(this);
but1.setOnClickListener(this);
but2.setOnClickListener(this);
but3.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.but:
but.setText("点击清零,从新开始 ");
timer.setBase(SystemClock.elapsedRealtime());//计时器清零
timer.start();
break;
case R.id.but1:
but1.setText("点击清零,从新开始");
timer1.setBase(SystemClock.elapsedRealtime());//计时器清零
int hour = (int) ((SystemClock.elapsedRealtime() - timer1.getBase()) / 1000 / 60);
timer1.setFormat("0" + String.valueOf(hour) + ":%s");
timer1.start();
break;
case R.id.but2:
if (but2.getText().toString().equals("点击暂停")) {
timer1.stop();//计时停止但是不清零
but2.setText("点击开始");
} else {
timer1.start();//计时停止但是不清零
but2.setText("点击暂停");
}
break;
case R.id.but3:
// Toast.makeText(this, + "", Toast.LENGTH_SHORT).show();
tv0.setText("当前时间" + timer1.getText().toString() + "\n" +
"当前总秒数: " + formatTurnSecond(timer1.getText().toString()) + "\n" +
"当前总毫秒数: " + formatTurnSecond(timer1.getText().toString()) * 1000 + "\n" +
"当前时间: " + change((int) formatTurnSecond(timer1.getText().toString()))
);
break;
}
}
/*
* 将时分秒转为秒数
* */
public long formatTurnSecond(String time) {
String s = time;
int index1 = s.indexOf(":");
int index2 = s.indexOf(":", index1 + 1);
int hh = Integer.parseInt(s.substring(0, index1));
int mi = Integer.parseInt(s.substring(index1 + 1, index2));
int ss = Integer.parseInt(s.substring(index2 + 1));
Log.e(TAG, "formatTurnSecond: 时间== " + hh * 60 * 60 + mi * 60 + ss);
return hh * 60 * 60 + mi * 60 + ss;
}
/*
* 将秒数转为时分秒
* */
public String change(int second) {
int h = 0;
int d = 0;
int s = 0;
int temp = second % 3600;
if (second > 3600) {
h = second / 3600;
if (temp != 0) {
if (temp > 60) {
d = temp / 60;
if (temp % 60 != 0) {
s = temp % 60;
}
} else {
s = temp;
}
}
} else {
d = second / 60;
if (second % 60 != 0) {
s = second % 60;
}
}
return h + ":" + d + ":" + s + "";
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.time.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Chronometer
android:id="@+id/timer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:format="%s"
android:gravity="center" />
<Button
android:id="@+id/but"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击开始" />
<Chronometer
android:id="@+id/timer1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:format="00:00:00"
android:gravity="center" />
<Button
android:id="@+id/but1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击开始" />
<Button
android:id="@+id/but2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击暂停" />
<Button
android:id="@+id/but3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击获取时间" />
<TextView
android:id="@+id/tv0"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>