昨天在项目中遇到了在TextView控件中显示实时时间的情况 查阅了一些资料做起来很简单,今天整理一下,和大家共同学习 :
xml布局文件如下 :就一个简单的TextView
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.lsc.MainActivity">
<TextView
android:id="@+id/main_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
java 代码如下:
public class MainActivity extends AppCompatActivity {
TextView mainTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取textView控件 我用的3.0.1版本的AS 如果是以前版本的应该强转
mainTv = findViewById(R.id.main_tv);
new TimeThread().start();//启动线程
}
//写一个新的线程每隔一秒发送一次消息,这样做会和系统时间相差1秒
public class TimeThread extends Thread{
@Override
public void run() {
super.run();
do{
try {
Thread.sleep(1000);
Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);
} catch (InterruptedException e) {
e.printStackTrace();
}
}while (true);
}
}
private Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
switch (msg.what){
case 1:
mainTv.setText(new SimpleDateFormat("HH:mm:ss").format(new Date(System.currentTimeMillis())));
break;
}
return false;
}
});
}
效果图如下: