仿新浪微盾客戶端專案簡介五

2021-09-23 21:50:02 字數 1239 閱讀 9867

這節中,我們我們來討論微盾上介面上實現的二三事。這也是這個專案的重頭戲。

介面上我們要做乙個什麼效果,乙個倒計時的效果了,這個倒計時效果以後用的很多,希望對大家有幫助。

我這裡布局方式用到了幀布局的方式,乙個是所謂的表盤的情況,乙個是倒計時的秒針, 相應的布局檔案如下了:

那個rin**iew是我自定義的表盤控制項,它即在手機的介面上畫了乙個園,而這個countdownindicator即是乙個倒計時控制項,它是乙個什麼,乙個扇形,乙個隨著時間的變化而不斷改變自己大小的扇形。這兩個控制項的原理是什麼了,我們來窺探它一下原貌了。

首先看一下rin**iew的源**:

paint paint;

context ctx;

public rin**iew(context context, attributeset attrs)

@override

protected void ondraw(canvas paramcanvas)

/*** 根據手機的解析度從 dp 的單位 轉成為 px(畫素)

*/public static int dip2px(context context, float dpvalue)

通過上面的源**,我們可以清晰看出來了,這個只是通過相應畫筆在指定的圓心位置按照固定位置來畫出來相應的圓環。

而countdownindicator控制項則比上述的控制項園複雜一點了,首先還是看**:

public class countdownindicator extends view 

@override

protected void ondraw(canvas canvas)

public void setphase(double phase)

this.phase = phase;

invalidate();

}

這個類主要就是phase這個角度,而他掃瞄的幅度這是乙個起始角度,起始角度是乙個o-1的浮點數*360,而相應的掃瞄的幅度根據相應資料三角函式的方法是270-起始角度了,這樣就得到乙個倒計時秒盤的結果。

有了這兩個類之後,根據相應的時間控制項計時之後,最終的計時的效果是這樣的:

這個動畫製作過程大家明白吧。

仿新浪微盾客戶端專案簡介四

上節我們說到我們主要的演算法是在google的乙個開源專案google authenticator 修改的。那麼我們窺探一下google authenticator的全貌。我們通過源 來了解,上 首先是一些噼里啪啦的定義的常量,變數。private static final int pass cod...

仿新浪微盾客戶端專案簡介四

上節我們說到我們主要的演算法是在google的乙個開源專案google authenticator 修改的。那麼我們窺探一下google authenticator的全貌。我們通過源 來了解,上 首先是一些噼里啪啦的定義的常量,變數。private static final int pass cod...

仿新浪微盾客戶端專案簡介三

上節我們說到,關於opt演算法的說明,也說到這個專案是使用totp 基於時間 方法。這節講的主要把它怎麼整合專案中。整合專案中,此演算法需要注意這麼幾點。1.與伺服器端統一的準確時間 由於是使用totp演算法,客戶端與伺服器端的演算法是必須要儲存一致的。對時介面 獲取伺服器端準確時間,返回,以秒為單...