Android自定義view實現數字時鐘
最近在專案中遇到了一個需要實時更新時間的需求,並且用的地方還是挺多的,無奈做了一個簡單的view來時現這個數字時鐘。
首先看一下效果,比較簡單,就是顯示時分秒。
實現思路比較簡單,利用handler的延時傳送來實現事件的實時更新。
1.因為現實的最終效果只是一個字元,所以就直接繼承TextView來實現時間的展示,程式碼如下
在初始化的時候直接將當前物件最為最終的顯示物件,
2。因為最終顯示的是事件,我們要獲取當前的時間,
這裡我用的是Calendar來實現獲取當前的時間,當然獲取時間的方式有很多種,你都可以用,
3.獲取時間後,如果要實時的更新時間,則我們需要每秒都獲取一次時間,我們要開啟一個子執行緒,在子執行緒中做我們的實時操作,
在init方法中,我們先獲取當前的時間,然後再開啟一個子執行緒進行實時更新操作,
4.實時更新操作通過handler的延時傳送訊息來實現,
我們可以看到通過post方法來傳送一個延時訊息,最後在handleMessage方法中做訊息的處理,然後再傳送訊息,這樣就實現了無限迴圈,進而實現時間的實時更新,
以上就是實現一個簡單的數字時間顯示器的程式碼,比較簡單,下面直接貼上程式碼,
public classCustomTimeViewextendsTextView{
private finalCustomTimeViewtextView;
privateStringtime;
privateTimeHandlermTimehandler=newTimeHandler();
publicCustomTimeView(Context context) {
this(context,null);
}
publicCustomTimeView(Context context,AttributeSet attrs) {
super(context,attrs);
this.textView=this;
init(context);
}
private voidinit(Context context) {
try{
//初始化textview顯示時間
updateClock();
//更新程式開始
newThread(newRunnable() {
@Override
public voidrun() {
mTimehandler.startScheduleUpdate();
}
}).start();
}catch(Exception e){
e.printStackTrace();
}
}
//更新Handler通過handler的延時傳送訊息來更新時間
private classTimeHandlerextendsHandler {
private booleanmStopped;
private voidpost(){
//每隔1秒傳送一次訊息
sendMessageDelayed(obtainMessage(0),1000);
}
@Override
public voidhandleMessage(Message msg) {
super.handleMessage(msg);
if(!mStopped){
updateClock();
//實現實時更新
post();
}
}
//開始更新
public voidstartScheduleUpdate(){
mStopped=false;
post();
}
//停止更新
public voidstopScheduleUpdate(){
mStopped=true;
removeMessages(0);
}
}
//返回當前的時間,並結束handler的資訊傳送
publicStringgetTime(){
//停止傳送訊息
mTimehandler.stopScheduleUpdate();
returntime;
}
private voidupdateClock() {
//獲取當前的時間
Calendar calendar= Calendar.getInstance();
inthour=calendar.get(Calendar.HOUR_OF_DAY);
intminute=calendar.get(Calendar.MINUTE);
intsecond=calendar.get(Calendar.SECOND);
String s="";
String m="";
String h="";
if(hour<10){
h="0"+hour;
}else{
h=hour+"";
}
if(minute<10){
m="0"+minute;
}else{
m=minute+"";
}
if(second<10){
s="0"+second;
}else{
s=second+"";
}
time=h+":"+m+":"+s;
textView.setText(time);
}
}
直接貼上以上程式碼就可以使用了。
相關文章
- 簡單介紹Android自定義View實現時鐘功能AndroidView
- android自定義view(自定義數字鍵盤)AndroidView
- Android自定義View:快遞時間軸實現AndroidView
- Android 自定義 View 實現橫行時間軸AndroidView
- Android自定義View:黑客帝國數字雨AndroidView黑客
- 自定義View合輯(1)-時鐘View
- Android自定義View:View(二)AndroidView
- Android自定義view之實現帶checkbox的SnackbarAndroidView
- Android 自定義 View 實戰之 PuzzleViewAndroidView
- Android自定義View整合AndroidView
- 【朝花夕拾】Android自定義View篇之(四)自定義View的三種實現方式及自定義屬性詳解AndroidView
- 【自定義View】抖音網紅文字時鐘-上篇View
- Android自定義view-自繪ViewAndroidView
- Flutter自定義View的實現FlutterView
- 重拾Android自定義ViewAndroidView
- Android自定義View:ViewGroup(三)AndroidView
- Android 自定義 View 之 LeavesLoadingAndroidView
- Android自定義數字鍵盤Android
- 直播系統程式碼,Android自定義View實現呼吸燈效果AndroidView
- 直播平臺原始碼,Android自定義View實現呼吸燈效果原始碼AndroidView
- Android技術分享|【自定義View】實現Material Design的Loading效果AndroidViewMaterial Design
- Android自定義View實現流式佈局(熱門標籤效果)AndroidView
- Android自定義View之分貝儀AndroidView
- Android自定義View之捲尺AndroidView
- Android自定義View注意事項AndroidView
- Android自定義View-卷軸AndroidView
- Android自定義View 水波氣泡AndroidView
- Android 自定義View 點贊效果AndroidView
- Android 自定義View基礎(一)AndroidView
- android自定義View——座標系AndroidView
- Android 自定義View:深入理解自定義屬性(七)AndroidView
- Android自定義拍照實現Android
- Android自定義View播放Gif動畫AndroidView動畫
- Android 自定義 View 之入門篇AndroidView
- Android 自定義View之下雨動畫AndroidView動畫
- Android自定義View---驗證碼AndroidView
- Android自定義view之emoji鍵盤AndroidView
- Android自定義View之Canvas的使用AndroidViewCanvas
- Android 自定義 View 最少必要知識AndroidView