各位看官们,大家好,上一回中咱们说的例子是"制作时钟",这一回咱们介绍的例子是"让时钟走起来"。闲话休提,言归正转,让我们一起Talk Android吧!
看官们,我们在上一章回中制作了一个时钟,不过时钟只能显示当前的时间,不能随时间变化而变化。本章回中将让时钟走起来,也就是随着时间变化而变化。
我们把时钟当作自定义的控件,可以使用View的invalidate
()方法来刷新控件,刷新的频率为1秒,此时就会回调控件的onDraw()方法,进而更新时钟指针。在刷新控件时需要在子线程中操作,因此使用Handler机制来实现。
<com.android..ui.ClockView
android:id="@+id/id_clock_view"
android:background="@color/teal_200"
android:layout_width="400dp"
android:layout_height="800dp">
2.在主程序中绑定布局中的时钟控件;
//使用数据绑定来绑定布局中的控件
mClockView = mBinding.idClockView;
private void initHandle() {
mHandler = new UpdateTimeHandle();
mMessage = new Message();
mMessage.what = 100;
mHandler.sendMessage(mMessage);
mHandler.sendMessage(new Message());
}
private class UpdateTimeHandle extends Handler {
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
mClockView.invalidate();
mMessage = mHandler.obtainMessage(100);
//刷新时间为1秒
mHandler.sendMessageDelayed(mMessage,1000);
}
}
我们需要在onCreate
()方法中初始化Handler,并且在onPause
方法中remvoe Handler中的消息,以免引起内存泄漏。
我们把时钟做成了一个控件,在其他程序中可以像使用普通控件一样去使用。因此整体上来看使用很方便。不过该控件也有一些缺点,后续我们会持续改进。
以上内容是我对时钟控件的分析和总结,大家也可以发表自己的观点,欢迎大家在评论区交流与讨论。
看官们,关于Android中"让时钟走起来"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!