自定義 View 實現秒錶功能

2021-07-25 10:41:46 字數 2282 閱讀 3540

一般計時類的自定義 view 都要考慮乙個問題,那就是繪製是需要時間的,雖然很短,但是隨著時間的推移,誤差就會越來越大,我之前寫過自定義 view 實現鐘錶功能的部落格,當時是通過每秒鐘獲取一次系統時間,然後根據系統時間重新繪製來保證不會產生誤差的,如果要實現秒錶功能,這個方法明顯不行,應為秒錶是自己計時的,和系統時間沒有關係,為了防止產生誤差,我們可以每秒鐘都執行一次動畫,一秒鐘過完之後,無論動畫有沒有執行完,強制將時間推進到一秒之後,由於一秒鐘之內產生的誤差非常小,幾乎無法察覺,這樣就能有效的防止隨著時間的推移而產生較大的誤差了,接下來就直接貼上自定義秒錶的**

attrs;

<?xml version="1.0" encoding="utf-8"?>

stopwatchview:

public class stopwatchview extends view 

public stopwatchview(context context, attributeset attrs)

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

@override

protected void ondraw(canvas canvas)

//初始化控制項

private void initview(context context, attributeset attrs)

//初始化畫筆

private void initpaint()

//初始化屬性動畫

private void initanimator()

});animator.addlistener(new animator.animatorlistener()

@override

public void onanimationend(animator animation)

@override

public void onanimationcancel(animator animation)

@override

public void onanimationrepeat(animator animation)

}});

}// 計算寬度

private int measurewidth(int measurespec) else else }}

return result;

}// 計算高度

private int measureheight(int measurespec) else else }}

return result;

}//畫背景

private void drawbackground(canvas canvas)

//畫大刻度

private void drawbigscale(canvas canvas)

paint.setcolor(otherscalecolor);

paint.setstrokewidth(oneunit * 2);

for (int i = 0; i < 60; i++)

canvas.rotate(6);

}paint.setcolor(thirdscalecolor);

for (int i = 0; i < 300; i++)

canvas.rotate((float) 1.2);}}

/* private void drawnumber(canvas canvas)

}*///畫小圓盤和圓盤上的刻度

private void drawsmalldial(canvas canvas)

}//畫秒針

private void drawbigpointer(canvas canvas)

//畫毫秒針

private void drawsmallpointer(canvas canvas)

//開始計時

public void start()

//暫停計時

public long pause()

return 0;

}//暫停後重新計時

public void restart(long playtime)

}//重置秒錶狀態

public void clean()

}}

注釋寫得很清楚了,這裡不再過多解釋

Python 實現秒錶功能

python 實現秒錶功能 以下例項使用 time 模組來實現秒錶功能 例項 import time print 按下回車開始計時,按下 ctrl c 停止計時。while true try input 如果是 python 2.x 版本請使用 raw input starttime time.ti...

ChinaExcel報表自定義報表功能

目前能夠有自定義功能的報表為數不少,但真正能夠實現自定義功能的實際上少之又少,以下是評判的幾個標準 一 介面定義功能 a 在介面定義中,是否可以自動生成介面,是否可以對已經生成的介面進行任意的修改,如修改字型 顏色 線,行寬等等,都成為介面是否能夠自定義的參考。b 能否提供類 excel 等操作方式...

Android自定義View實現

android自定義view實現很簡單 繼承view或者其子類,重寫建構函式 ondraw,onmeasure 等函式,根據繼承的類的不同可能有所不同。如果自定義的view需要有自定義的屬性,需要在values下建立attrs.xml。在其中定義你的屬性。在使用到自定義view的xml布局檔案中需要...